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ı
| Düz OAuth 2.0 | OIDC (OAuth 2.0 + openid scope) |
|---|---|
access_token + refresh_token | access_token + refresh_token + id_token |
| API’yi çağırmanın yetkisi | + Kullanıcının kim olduğunun kanıtı |
/oauth/token | Aynı + /oauth/userinfo, /oauth/jwks, /.well-known/openid-configuration |
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
Token’ı üreten kimlik sağlayıcı. Her zaman
https://dev.flextell.ai veya production’da https://app.flextell.ai.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.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.Token’ın üretildiği Unix timestamp.
Token’ın geçerlilik süresinin sonu (Unix timestamp).
Kullanıcının ad soyadı (yalnızca
profile scope’u talep edildiyse).Kullanıcının e-posta adresi (yalnızca
email scope’u talep edildiyse).Kullanıcının telefon numarası (yalnızca
phone scope’u talep edildiyse).Scope → claim eşlemesi
| Scope | Eklenen claim’ler |
|---|---|
openid | sub (zorunlu) |
profile | name |
email | email |
phone | phone_number |
id_token doğrulama
Flextell’den gelenid_token’ı backend’inizde mutlaka doğrulamanız gerekir. Asla imza kontrol etmeden güvenmeyin:
JWKS uçtan genel anahtarı çekin
İ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.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ı.