Ana içeriğe geç

Token Oluşturma

Client kimlik bilgilerinizi bir access token ve bir refresh token ile değiştirir. Diğer tüm partner endpoint'leri access token'ı Authorization: Bearer <access_token> olarak alır. expires_in bir zaman damgası değil, saniye cinsinden ömürdür (RFC 6749 §5.1).

Endpoint gateway'de herkese açıktır (bearer token gerekmez). Integration servisi yine de client kimlik bilgilerini, client'ın kullanım süresini ve client sertifika gerektiriyorsa client sertifikasını kontrol eder.

Client başına tek geçerli access token

Her client'ın aynı anda yalnızca bir geçerli access token'ı vardır. Hangi grant ile olursa olsun yeni bir token almak, o client'ın önceki access token'ını anında geçersiz kılar: eski token ile yapılan sonraki çağrı 401 ile reddedilir. Birden fazla süreç aynı client'ı paylaşıyorsa token'ı tek bir süreç alıp diğerlerine dağıtmalı ya da her sürece ayrı bir client verilmelidir.

İstek​

POST /v2/oauth/token

Başlıklar​

AdAçıklama
Content-TypeZorunlu. application/json

Gövde​

AlanTipZorunluAçıklama
client_idstringEvetClient kimliğiniz
client_secretstringEvetClient gizli anahtarınız
grant_typestringEvetclient_credentials, password ya da refresh_token. Grant client'ınızda tanımlı olmalıdır.
usernamestringpassword grantClient'ınızın düğümündeki bir supervisor'ın e-postası
passwordstringpassword grantO supervisor'ın parolası
refresh_tokenstringrefresh_token grantClient'ınıza verilmiş en son refresh token

Grant türleri​

GrantKimin adınaToken'daki izinlerAccess token ömrüRefresh token ömrü
client_credentialsClient'ın kendisi (makineden makineye)Client'ta tanımlı scope'larClient'ın token_expiry.duration değeri; token_expiry.enabled false ise süresiz (expires_in bu durumda 0)Access token ile aynı
passwordClient'ın düğümündeki bir supervisorSupervisor'ın rol izinleri15 dakika (expires_in: 900)30 gün
refresh_tokenRefresh token'ın verildiği kimlikİlk grant ile aynıİlk grant ile aynıİlk grant ile aynı

Client politikasından bağımsız olarak bir refresh token, verildiği andan itibaren 365 günden sonra kullanılamaz.

Client credentials​

curl --request POST \
--url '{{baseUrl}}/v2/oauth/token' \
--header 'Content-Type: application/json' \
--data '{
"client_id": "c1a9beda-b14c-4eb5-b880-113023e6fc2d",
"client_secret": "<client_secret>",
"grant_type": "client_credentials"
}'

Password​

curl --request POST \
--url '{{baseUrl}}/v2/oauth/token' \
--header 'Content-Type: application/json' \
--data '{
"client_id": "c1a9beda-b14c-4eb5-b880-113023e6fc2d",
"client_secret": "<client_secret>",
"grant_type": "password",
"username": "supervisor@example.com",
"password": "<password>"
}'

Supervisor, client ile aynı düğüme ait olmalıdır; başka bir düğümün supervisor'ı tıpkı yanlış parola gibi reddedilir. Aynı kullanıcı adı ya da aynı adresten tekrarlanan hatalı parola denemeleri 429 ile yavaşlatılır.

Refresh token​

curl --request POST \
--url '{{baseUrl}}/v2/oauth/token' \
--header 'Content-Type: application/json' \
--data '{
"client_id": "c1a9beda-b14c-4eb5-b880-113023e6fc2d",
"client_secret": "<client_secret>",
"grant_type": "refresh_token",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}'

Bir refresh token yalnızca bir kez kullanılır. Çağrı, sunulan refresh token'ı tüketir ve yeni bir çift döner; ikisini de saklayın. Tüketilmiş ya da daha yeni bir token ile geçersiz kalmış bir refresh token 400 ve 10006 koduyla reddedilir. Bir client'ın yalnızca en son verilen refresh token'ı geçerlidir; bu yüzden yeni bir client_credentials ya da password token'ı da bekleyen refresh token'ı geçersiz kılar.

Yanıt​

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 900,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"scope": "token:view token:create default",
"created_at": 1762687200
}

Yanıt Alanları​

AlanTipAçıklama
access_tokenstringAuthorization: Bearer <access_token> olarak gönderilecek JWT
token_typestringHer zaman Bearer
expires_innumberSaniye cinsinden access token ömrü. Client politikası süresiz token veriyorsa 0
refresh_tokenstringrefresh_token grant'ı için tek kullanımlık token
scopestringToken'ın taşıdığı izinler, boşlukla ayrılmış (password için rol izinleri, client_credentials için client scope'ları)
created_atnumberToken'ın verildiği Unix zamanı

Hatalar​

Bu endpoint ortak hata biçiminden daha eskidir ve retlerin çoğunu HTTP 409 ve kodu içinde taşıyan bir JSON string gövdesiyle yanıtlar:

"Code: 10003, Domain: 20, Message: invalid request"
DurumGövdeNeden
400stringGövde ayrıştırılamıyor ya da client_id, client_secret veya grant_type eksik / bilinmeyen bir grant
400{"code": 10006, "domain": 20, "message": "refresh token is no longer valid"}Refresh token daha önce kullanılmış ya da daha yeni bir token ile geçersiz kalmış. Client'ınızın kendi grant'ı ile yeniden giriş yapın
401{"code": 10005, "domain": 20, "message": "client certificate required"}Client sertifika gerektiriyor ve TLS el sıkışmasında ona verilen sertifika sunulmadı. Bkz. mTLS Client Sertifikaları
409Code: 10001 … client not foundBilinmeyen client_id / client_secret çifti
409Code: 10002 … client is inactiveOperatör client'ı devre dışı bıraktı
409Code: 10004 … client has expiredClient'ın kullanım süresi doldu. Hiçbir grant, refresh_token dahil, token vermez
409Code: 10003 … invalid requestGrant client'ta tanımlı değil; bir grant parametresi eksik; yanlış kullanıcı adı ya da parola; supervisor başka bir düğümde; refresh token hatalı biçimli, süresi dolmuş, 365 günden eski ya da başka bir client'a ait
429{"code": 10001, "domain": 86, "message": "too many failed password attempts; try again later"}Çok fazla hatalı password grant denemesi

Diğer tüm endpoint'ler ortak hata biçimini kullanır.

Token'ı kullanmak​

curl --request GET \
--url '{{baseUrl}}/v2/admin/tokens/68aeb272d9336c619ce249f6' \
--header 'Authorization: Bearer <access_token>'

Token eksik, hatalı biçimli, süresi dolmuş, bir refresh token ya da artık client'ın geçerli access token'ı değilse korumalı çağrı 401 döner. Yeni bir token alın (ya da refresh token'ı kullanın) ve tekrar deneyin.