> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Token Alma Yöntemleri

> Token almak için iki tip yöntem bulunur. Bu yöntemler, oluşturulan JWT/OAuth2 Politikası üzerinden "Bu Poliçe'den Yönet" veya "ACL'den Yönet" seçeneklerinden birinin seçilmesiyle aktifleştirilir.

Token almak için iki tip yöntem bulunur. Bu yöntemler, oluşturulan JWT/OAuth2 Politikası üzerinden "Bu Poliçe'den Yönet" veya "ACL'den Yönet" seçeneklerinden birinin seçilmesiyle aktifleştirilir. İki yöntemle de token alma işlemi detaylıca anlatılacaktır.

## 1. "Bu Poliçe'den Yönet" Seçeneği ile Token Alma

<Info>
  Authentication politikasının yönetim seviyesine göre **client\_id** ve **client\_secret** değerlerini almanın yolları aşağıdaki gibidir:

  * **Authentication Politikası API Proxy'e Eklendiyse:** client\_id ve client\_secret değerlerini API Proxy'nin Overview bölümünde bulunan "Show Proxy Key" kısmından alınır.
  * **Authentication Politikası Proxy Group'a Eklendiyse:** client\_id ve client\_secret değerlerini API Proxy Group'un Overview bölümünde bulunan "Show Proxy Key" kısmından alınır.
  * **Authentication Politikası Policy Group'a Eklendiyse:** client\_id ve client\_secret değerlerini ilgili Policy Group'un Definition bölümünde bulunan "Show Proxy Key" kısmından alınır.
</Info>

### 1.1 JWT ile Token Alma

Oluşturulan JWT Politikasında "Bu Poliçe'den Yönet (Manage From This Policy)" seçeneği seçilmiş ise bu yöntemle token alınır.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/auth/jwt`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile ve URL parametresi kullanarak gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız)
</Info>

* HTTP Metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar Adı    | Politika Tanımlanırken "client\_credentials" Seçildiyse Girilecek Değer | Politika Tanımlanırken "password" Seçildiyse Girilecek Değer       |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| grant\_type    | client\_credentials                                                     | password                                                           |
| client\_id     | API Anahtarı alanından alınan Genel Anahtar değeri                      | API Anahtarı alanından alınan Genel Anahtar değeri                 |
| client\_secret | API Anahtarı alanından alınan Gizli Anahtar değeri                      | "-" (tire işareti)                                                 |
| username       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin kullanıcı adı |
| password       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin şifresi       |

#### Token Yenileme

**Token Ölümsüz Olsun** seçeneği kapatılıp **Token Yenileme Olsun** seçeneği açılır ise belli bir süre sonra geçersiz hale gelecek olan *token*'lar, **Yenilenmiş Token Geçerlilik Süresi** alanında belirtilen süre içerisinde yenilenebilir.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/auth/jwt`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile URL parametresi üzerinden gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız).
</Info>

* HTTP Metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar Adı    | Anahtar Değeri                                                         |
| -------------- | ---------------------------------------------------------------------- |
| grant\_type    | refresh\_token                                                         |
| client\_id     | API Anahtarı alanından alınan Genel Anahtar değeri                     |
| client\_secret | "-" (tire işareti)                                                     |
| refresh\_token | Daha önce alınmış olan token'daki "refresh\_token" anahtarındaki değer |

#### Grant\_type client\_credentials ise

Varsayılan değerleri ile bir JWT Kimlik Doğrulama poltiikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-client-credentials-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=370d25266ece76df9ecc42c320ed832b" alt="JWT Client Credentials Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-client-credentials-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-client-credentials-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=c6c6ad17e0854974f8a9ee3ce7844ef0" alt="JWT Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-client-credentials-usage.png" />

#### Grant\_type password ise

Grant Type değeri Password olan bir JWT Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-password-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=05d3c58c5acf0c3c1166767f470dd49a" alt="JWT Password Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-password-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-password-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=1b8b32fd25d6ec35880825d8df117800" alt="JWT Password Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-password-usage.png" />

#### Grant\_type refresh\_token ise

Yenileme seçeneği açık olacak şekilde bir JWT Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-refresh-token-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=d5a36da04d096b4c5969915aad0f92c7" alt="JWT Refresh Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-refresh-token-request.png" />

Token yenileme yapmak için, ilk istekte gelen cevapta bulunan "refresh\_token" alanındaki değeri alın ve aşağıdaki gibi hazırladığınız mesajda refresh\_token anahtarına değer olarak verin.

Gelecek olan cevap içerisindeki "access\_token" alanındaki değer yenilenmiş token değeriniz olacaktır.

**Apinizer Test Konsolu üzerinden token yenilemek için gönderilen istek örneğine ait görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/jwt-refresh-token-refresh.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=c1ba3ac42016c2c15df6d6f5388e18a7" alt="JWT Refresh Token Yenileme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/jwt-refresh-token-refresh.png" />

### 1.2 OAuth2 ile Token Alma

Oluşturulan OAuth2 Politikasında "Bu Poliçe'den Yönet (Manage From This Policy)" seçeneği seçilmiş ise bu yöntemle token alınır.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/auth/token`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile ve URL parametresi kullanarak gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız)
</Info>

* HTTP metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar Adı    | Politika Tanımlanırken "client\_credentials" Seçildiyse Girilecek Değer | Politika Tanımlanırken "password" Seçildiyse Girilecek Değer       |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| grant\_type    | client\_credentials                                                     | password                                                           |
| client\_id     | API Anahtarı alanından alınan Genel Anahtar değeri                      | API Anahtarı alanından alınan Genel Anahtar değeri                 |
| client\_secret | API Anahtarı alanından alınan Gizli Anahtar değeri                      | API Anahtarı alanından alınan Gizli Anahtar değeri                 |
| username       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin kullanıcı adı |
| password       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin şifresi       |

#### Token Yenileme

**Token Ölümsüz Olsun** seçeneği kapatılıp **Token Yenileme Olsun** seçeneği açılır ise belli bir süre sonra geçersiz hale gelecek olan *token*'lar, **Yenilenmiş Token Geçerlilik Süresi** alanında belirtilen süre içerisinde yenilenebilir.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/auth/token`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile URL parametresi üzerinden gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız).
</Info>

* HTTP metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir

| Anahtar Adı    | Anahtar Değeri                                                         |
| -------------- | ---------------------------------------------------------------------- |
| grant\_type    | refresh\_token                                                         |
| client\_id     | API Anahtarı alanından alınan Genel Anahtar değeri                     |
| client\_secret | API Anahtarı alanından alınan Gizli Anahtar değeri                     |
| refresh\_token | Daha önce alınmış olan token'daki "refresh\_token" anahtarındaki değer |

#### Grant\_type client\_credentials ise

Varsayılan değerleri ile bir OAuth2 Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-client-credentials-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=5b6836f41e182199c8b43d68ed8b29b9" alt="OAuth2 Client Credentials Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-client-credentials-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-client-credentials-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=a39453f4aa50dede3efd6b3d6652271e" alt="OAuth2 Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-client-credentials-usage.png" />

#### Grant\_type password ise

Grant Type değeri Password olan bir OAuth2 Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-password-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=10d0274a6b2b125afcae099794318f80" alt="OAuth2 Password Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-password-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-password-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=d09725a4bd4d3c4dee1674acd48967db" alt="OAuth2 Password Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-password-usage.png" />

#### GrantType: Refresh Token

Yenileme seçeneği açık olacak şekilde bir OAuth2 Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-refresh-token-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=adea99398b9bb03a5733c873debabea9" alt="OAuth2 Refresh Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-refresh-token-request.png" />

Token yenileme yapmak için, ilk istekte gelen cevapta bulunan "refresh\_token" alanındaki değeri alın ve aşağıdaki gibi hazırladığınız mesajda refresh\_token anahtarına değer olarak verin.

Gelecek olan cevap içerisindeki "access\_token" alanındaki değer yenilenmiş token değeriniz olacaktır.

**Apinizer Test Konsolu üzerinden token yenilemek için gönderilen istek örneğine ait görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-refresh-token-refresh.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=ac7f6fce9907565196a8fa90aeff2ebd" alt="OAuth2 Refresh Token Yenileme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/oauth2-refresh-token-refresh.png" />

### 1.3 Scope ile Token Alma

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/auth/jwt`.
* HTTP Metodu POST olmalıdır. Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir

| Anahtar Adı    | Politika Tanımlanırken "client\_credentials" Seçildiyse Girilecek Değer | Politika Tanımlanırken "password" Seçildiyse Girilecek Değer       |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| grant\_type    | client\_credentials                                                     | password                                                           |
| client\_id     | API Anahtarı alanından alınan Genel Anahtar değeri                      | API Anahtarı alanından alınan Genel Anahtar değeri                 |
| client\_secret | API Anahtarı alanından alınan Gizli Anahtar değeri                      | "-" (tire işareti)                                                 |
| username       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin kullanıcı adı |
| password       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin şifresi       |
| scope          | Kullanıcıya tanımlanan rol ismi                                         | Kullanıcıya tanımlanan rol ismi                                    |

#### Kullanıcıya Rol tanımlama

Kullanıcıya rol tanımlaması için aşağıdaki gibi roles kısmından yeni bir rol eklenip kullanıcıya API Proxy ACL kısmından o Proxy eklenmelidir.

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-role-definition.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=ea8c5f63177680a57246a38306f32641" alt="Scope ile Rol Tanımlama" width="800" style={{maxWidth: '800px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-role-definition.png" />

#### Grant\_type client\_credentials ise

Varsayılan değerleri ile bir JWT Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-client-credentials-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=34389dd30d8c98f2a63176f2e8b243f4" alt="Scope ile Client Credentials Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-client-credentials-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-client-credentials-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=aff64cbb5581bf707fd7b136de20996a" alt="Scope ile Token Kullanımı" width="800" style={{maxWidth: '800px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-client-credentials-usage.png" />

#### Grant\_type password ise

Grant Type değeri Password olan bir JWT Kimlik Doğrulama politikası ekleyin. Bu işlemi yaparken API Anahtarı bilgilerinizi kullanılmak üzere bir yere kopyalayın.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=5ba6108d47f0ec32160104564b169d36" alt="Scope ile Password Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=97efbb615532aec849eff916d260a61f" alt="Scope ile Password Token Kullanımı" width="800" style={{maxWidth: '800px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-usage.png" />

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-usage-2.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=add8b8331b1226eee031a7fe8ca55b18" alt="Scope ile Password Token Kullanımı 2" width="800" style={{maxWidth: '800px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/scope-password-usage-2.png" />

## 2. "ACL'den Yönet" Seçeneği ile Token Alma

### 2.1 JWT ile Token Alma

Oluşturulan JWT Politikasında "ACL'den Yönet (Manage From ACL)" seçeneği seçilmiş ise bu yöntemle token alınır.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/credential/jwt`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile ve URL parametresi kullanarak gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız)
</Info>

* HTTP Metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar Adı    | Politika Tanımlanırken "client\_credentials" Seçildiyse Girilecek Değer | Politika Tanımlanırken "password" Seçildiyse Girilecek Değer       |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| grant\_type    | client\_credentials                                                     | password                                                           |
| client\_id     | Credentials'a ait Client Id değeri                                      | Credentials'a ait Client Id değeri                                 |
| client\_secret | Credentials'a ait Client Secret değeri                                  | Credentials'a ait Client Secret değeri                             |
| username       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin kullanıcı adı |
| password       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin şifresi       |

#### Token Yenileme

**Token Ölümsüz Olsun** seçeneği kapatılıp **Token Yenileme Olsun** seçeneği açılır ise belli bir süre sonra geçersiz hale gelecek olan *token*'lar, **Yenilenmiş Token Geçerlilik Süresi** alanında belirtilen süre içerisinde yenilenebilir.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/credential/jwt`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile URL parametresi üzerinden gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız).
</Info>

* HTTP Metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar adı    | Anahtar Değeri                                                         |
| -------------- | ---------------------------------------------------------------------- |
| grant\_type    | refresh\_token                                                         |
| client\_id     | Credentials'a ait Client Id değeri                                     |
| client\_secret | Credentials'a ait Client Secret değeri                                 |
| refresh\_token | Daha önce alınmış olan token'daki "refresh\_token" anahtarındaki değer |

#### Grant\_type client\_credentials ise

ACL'den Yönet seçeneği ile bir JWT Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek varsayılan değerleri kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-client-credentials-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=2da43e794eaa8040032f0cda7799cf1e" alt="ACL JWT Client Credentials Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-client-credentials-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-client-credentials-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=05be52e6e852aa88891b37aec1431262" alt="ACL JWT Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-client-credentials-usage.png" />

#### Grant\_type password ise

ACL'den Yönet seçeneği ile bir JWT Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek Grant Type değerini Password olarak seçin ve kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-password-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=f096c7c8c212032cd86cb7cc48b58d83" alt="ACL JWT Password Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-password-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-password-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=9a4ea0022d76adadfe22774986b4c2e2" alt="ACL JWT Password Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-password-usage.png" />

#### Grant\_type refresh\_token ise

ACL'den Yönet seçeneği ile bir JWT Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek Token Yenileme seçeneğini aktifleştirin ve kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-refresh-token-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=28f05488bb0a915d21f5b40246414a5b" alt="ACL JWT Refresh Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-refresh-token-request.png" />

Token yenileme yapmak için, ilk istekte gelen cevapta bulunan "refresh\_token" alanındaki değeri alın ve aşağıdaki gibi hazırladığınız mesajda refresh\_token anahtarına değer olarak verin.

Gelecek olan cevap içerisindeki "access\_token" alanındaki değer yenilenmiş token değeriniz olacaktır.

**Apinizer Test Konsolu üzerinden token yenilemek için gönderilen istek örneğine ait görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-refresh-token-refresh.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=f6d675b89c0240ee5e524adcc43646cf" alt="ACL JWT Refresh Token Yenileme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-jwt-refresh-token-refresh.png" />

### 2.2 OAuth2 ile Token Alma

Oluşturulan OAuth2 Politikasında "ACL'den Yönet (Manage From ACL)" seçeneği seçilmiş ise bu yöntemle token alınır.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/credential/token`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile ve URL parametresi kullanarak gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız)
</Info>

* HTTP metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir.

| Anahtar Adı    | Politika Tanımlanırken "client\_credentials" Seçildiyse Girilecek Değer | Politika Tanımlanırken "password" Seçildiyse Girilecek Değer       |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| grant\_type    | client\_credentials                                                     | password                                                           |
| client\_id     | Credentials'a ait Client Id değeri                                      | Credentials'a ait Client Id değeri                                 |
| client\_secret | Credentials'a ait Client Secret değeri                                  | Credentials'a ait Client Secret değeri                             |
| username       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin kullanıcı adı |
| password       | Bu alan eklenmez                                                        | Seçtiğiniz doğrulama havuzundaki kayıtlardan birinin şifresi       |

#### Token Yenileme

**Token Ölümsüz Olsun** seçeneği kapatılıp **Token Yenileme Olsun** seçeneği açılır ise belli bir süre sonra geçersiz hale gelecek olan *token*'lar, **Yenilenmiş Token Geçerlilik Süresi** alanında belirtilen süre içerisinde yenilenebilir.

Apinizer Test Konsolunu kullanarak ya da tercih ettiğiniz bir başka uygulama üzerinden yeni bir HTTP isteği hazırlayın.

* Adres, kendi Apinizer erişim adresinize uygun olarak şuna benzer şekilde girilmelidir: `https://apinizerErisimAdresiniz/credential/token`.

<Info>
  **URL Parametrelerine İzin Ver** seçeneği seçildiyse, bilgiler GET metodu ile URL parametresi üzerinden gönderilebilir. (Gönderilecek olan parametreler için aşağıdaki tabloya bakınız).
</Info>

* HTTP metodu POST olmalıdır.
* Body alanında "x-www-form-urlencoded" değeri seçilmelidir. Eğer Apinizer Test Konsolu kullanılmıyor ise "Content-Type" adı ve "application/x-www-form-urlencoded" değeri ile bir başlık eklenmelidir.
* Body alanına girilecek değerler aşağıdaki tablodaki gibidir

| Anahtar Adı    | Anahtar Değeri                                                         |
| -------------- | ---------------------------------------------------------------------- |
| grant\_type    | refresh\_token                                                         |
| client\_id     | Credentials'a ait Client Id değeri                                     |
| client\_secret | Credentials'a ait Client Secret değeri                                 |
| refresh\_token | Daha önce alınmış olan token'daki "refresh\_token" anahtarındaki değer |

#### Grant\_type client\_credentials ise

ACL'den Yönet seçeneği ile bir OAuth2 Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek varsayılan değerleri kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-client-credentials-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=dee527af33f596701b915f3e602b5b25" alt="ACL OAuth2 Client Credentials Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-client-credentials-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-client-credentials-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=fe03a2ccf847933f2c86596b1bc43930" alt="ACL OAuth2 Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-client-credentials-usage.png" />

#### Grant\_type password ise

ACL'den Yönet seçeneği ile bir OAuth2 Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek Grant Type değerini Password olarak seçin ve kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-password-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=e755919548217ec44dec99e0928b9e8e" alt="ACL OAuth2 Password Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-password-request.png" />

Yanıt mesajı içerisindeki "access\_token" alanındaki değer, bu API Proxy'e gönderilecek olan tüm isteklerde "Authorization" anahtarına değer olarak verilerek ilgili API'ye güvenli bir şekilde erişim sağlanmış olur.

**Apinizer Test Konsolu üzerinden token bilgisiyle istek gönderme işlemini içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-password-usage.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=9e331cae648058624e52446ad4fa7d41" alt="ACL OAuth2 Password Token ile İstek Gönderme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-password-usage.png" />

#### Grant\_type refresh\_token ise

ACL'den Yönet seçeneği ile bir OAuth2 Kimlik Doğrulama politikası ekleyin. Credential ekranından Token Settings paneline gelerek Token Yenileme seçeneğini aktifleştirin ve kaydedin.

Aşağıdaki örnekteki gibi bir mesaj ile token alma isteğinizi gönderin.

**Apinizer Test Konsolu üzerinden Token Servisine istek gönderme ayarlarını içeren görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-refresh-token-request.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=99ed97c6e3ed729ba2e0bac382b5fe30" alt="ACL OAuth2 Refresh Token İsteği" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-refresh-token-request.png" />

Token yenileme yapmak için, ilk istekte gelen cevapta bulunan "refresh\_token" alanındaki değeri alın ve aşağıdaki gibi hazırladığınız mesajda refresh\_token anahtarına değer olarak verin.

Gelecek olan cevap içerisindeki "access\_token" alanındaki değer yenilenmiş token değeriniz olacaktır.

**Apinizer Test Konsolu üzerinden token yenilemek için gönderilen istek örneğine ait görsele aşağıda yer verilmiştir:**

<img src="https://mintcdn.com/apinizer/uqgSOM5xX2YCmzwS/images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-refresh-token-refresh.png?fit=max&auto=format&n=uqgSOM5xX2YCmzwS&q=85&s=5e033667b8f34c0b783a39f2a1b399d9" alt="ACL OAuth2 Refresh Token Yenileme" width="600" style={{maxWidth: '600px', width: '100%', height: 'auto'}} data-path="images/develop/politikalar/token-service/token-alma-yontemleri/acl-oauth2-refresh-token-refresh.png" />
