OIDC akışı, standart Authorization Code akışı ile aynı uçları kullanır. Tek yapmanız gereken
scope parametresine openid eklemek ve dönen id_token’ı işlemek.Temel farkları
Discovery
Uçlarımızı kod tarafında sabitlemek yerine discovery URL’i çekerek dinamik olarak öğrenin:Örnek yanıt
openid scope’u ile yetki alma
Standart Authorization Code isteğine openid scope’unu ekleyin. Kullanıcı bilgilerini de almak istiyorsanız profile, email, phone scope’larını da ekleyebilirsiniz:
Token yanıtı
openid scope’u talep edildiğinde /oauth/token yanıtına ekstra id_token alanı eklenir:
id_token nedir?
id_token RS256 ile imzalanmış bir JWT’dir. İçinde “bu access token’ı falanca kullanıcı aldı” ifadesinin imzalı kanıtı vardır.
Örnek payload (decode edilmiş)
Alanlar
string
Token’ı üreten kimlik sağlayıcı. Her zaman
https://dev.flextell.ai veya production’da https://app.flextell.ai.string
Token’ın kimin için üretildiği — sizin
client_id’niz. Kabul etmeden önce mutlaka doğrulayın; değilse token size ait değildir.string
Kullanıcının Flextell’deki kalıcı ID’si. Kendi veritabanınızdaki hesabı bağlamak için bu değeri saklayın. E-posta değişse bile
sub değişmez.integer
Token’ın üretildiği Unix timestamp.
integer
Token’ın geçerlilik süresinin sonu (Unix timestamp).
string
Kullanıcının ad soyadı (yalnızca
profile scope’u talep edildiyse).string
Kullanıcının e-posta adresi (yalnızca
email scope’u talep edildiyse).string
Kullanıcının telefon numarası (yalnızca
phone scope’u talep edildiyse).Scope → claim eşlemesi
id_token doğrulama
Flextell’den gelenid_token’ı backend’inizde mutlaka doğrulamanız gerekir. Asla imza kontrol etmeden güvenmeyin:
1
JWKS uçtan genel anahtarı çekin
2
İmzayı RS256 ile doğrulayın
JWT’nin header’ı
{"alg": "RS256", "typ": "JWT"} olmalıdır. Public key ile imza eşleşmiyorsa token’ı reddedin.3
Claim'leri doğrulayın
iss→https://dev.flextell.aiveyahttps://app.flextell.aiolmalı.aud→ sizinclient_id’niz olmalı.exp→ şimdiki zamandan büyük olmalı (saat farkı için ±60 sn tolerans tipiktir).iat→ gelecek bir zaman olmamalı.
Node.js (jose kütüphanesi) örneği
UserInfo endpoint’i
id_token içindeki claim’ler dışında, access token ile /oauth/userinfo endpoint’ine istek atarak aynı bilgileri canlı olarak sorgulayabilirsiniz. Kullanıcı daha sonra profil bilgilerini değiştirdiyse güncel hali burada döner:
Yanıt
openid varsa sadece sub döner.
Logout (end_session_endpoint)
OIDC standart çıkış akışı için Token İptali → OpenID Connect ile oturum sonlandırma sayfasına bakın.PKCE ile güvenli istemciler
SPA veya native mobil uygulamalarclient_secret saklayamadığı için OIDC akışını PKCE (Proof Key for Code Exchange) ile kullanmalıdır. Detaylar: PKCE Akışı.
Sık sorulanlar
id_token’ı API isteklerinde Bearer olarak kullanabilir miyim? Hayır. id_token kimlik kanıtıdır, yetki tokeni değildir. API’ye erişim için her zaman access_token kullanın.
id_token’ı yenileyebilir miyim? Evet. Refresh token ile yeni bir access token aldığınızda — eğer orijinal istek openid scope’u içeriyordu — yanıtta yeni bir id_token da döner.
Claim’lerde hangi kullanıcı adı döner? name claim’i kullanıcının Flextell hesabındaki “Ad Soyad” alanıdır. Boşsa claim de boş gelir.
phone_number_verified gibi standart OIDC claim’leri destekleniyor mu? Şu anda yalnızca sub, name, email, phone_number dönüyor. Yeni claim’ler eklendiğinde Changelog’da duyurulacak.
Sonraki adımlar
PKCE Akışı
SPA ve mobil uygulamalar için güvenli code exchange.
Token İptali
end_session_endpoint ile tek seferde logout.Scopes
openid, profile, email, phone izinleri.Authorization Code
OAuth akışının tüm detayları.