openid scope’u istendiğinde access token’ın yanında kullanıcıyı tanımlayan bir id_token döndürür. Bu sayfa, uygulamanızın kimlik sunucusunu otomatik keşfetmesi, id_token’ı doğrulaması, kullanıcı bilgisini okuması ve oturumu kapatması için gereken adımları anlatır.
Yetkilendirme kodu akışının kendisi için Yetkilendirme kodu ve PKCE sayfasına bakın. Ortam adresleri Ortamlar sayfasındadır.
Discovery belgesi
Issuer adresinin altındaki/.well-known/openid-configuration yolu herkese açıktır ve kimlik doğrulama gerektirmez. OIDC kütüphaneniz yalnızca issuer adresini bilerek tüm endpoint’leri bu belgeden okuyabilir.
scopes_supported listesi kısaltılmıştır):
Belge
claims_supported, revocation_endpoint ve introspection_endpoint alanlarını içermez. Flextell’de /oauth/revoke ve introspection endpoint’i yoktur.id_token
id_token, yalnızca yetkilendirme isteğinde openid scope’u varsa POST /oauth/token yanıtında gelir. openid olmadan istenen token yanıtında id_token bulunmaz.
id_token, RS256 ile imzalanmış bir JWT’dir. Geçerlilik süresi 1 saattir ve sabittir. Access token’ın süresi (expires_in, üretimde yaklaşık 300 saniye) bundan bağımsızdır. Ayrıntı için Tokenlar.
openid, profile, email ve phone scope’ları her uygulama için kullanılabilir; uygulamanızın scope listesine eklemeniz gerekmez.
UserInfo
GET /oauth/userinfo, access token’ın sahibini döndürür. İstek Authorization: Bearer <access_token> başlığı ister.
Değeri boş olan alanlar yanıtta yer almaz.
sub= gibi sorgu parametreleri yok sayılır. Token geçersiz ya da süresi dolmuşsa endpoint 401 ve {"message":"Unauthenticated."} döndürür.
JWKS ve imza doğrulama
jwks_uri altındaki GET /oauth/jwks herkese açıktır ve imza doğrulama için genel anahtarı verir.
Anahtar kümesi tek bir anahtar içerir ve anahtarda
kid alanı yoktur. id_token başlığında da kid bulunmaz. Anahtarı kid ile eşleştirmeye çalışan bir kütüphane kullanıyorsanız, tek anahtarı doğrudan kullanacak şekilde ayarlayın.id_token’ı şu sırayla doğrulayın.
1
İmzayı doğrulayın
JWT’yi RS256 algoritması ve
/oauth/jwks adresindeki anahtarla doğrulayın. Algoritmayı belgeden okuyun; token başlığındaki alg değerine güvenmeyin.2
iss değerini kontrol edin
iss, kullandığınız ortamın issuer adresine (https://id.flextell.ai veya https://iddev.flextell.ai) eşit olmalıdır.3
aud değerini kontrol edin
aud, uygulamanızın client_id değerine eşit olmalıdır.4
nonce değerini kontrol edin
Yetkilendirme isteğinde gönderdiğiniz
nonce ile id_token içindeki değer aynı olmalıdır.5
exp değerini kontrol edin
exp gelecekte olmalıdır. Süresi dolan id_token’ı kullanıcı oturumu için kabul etmeyin.Çıkış akışı
Flextell, RP-initiated logout destekler. Uygulamanız tarayıcıyıend_session_endpoint adresine yönlendirir; sunucudan sunucuya POST ile çıkış yapılamaz.
Kayıtlı yönlendirme adreslerini uygulamayı oluştururken veya güncellerken
post_logout_redirect_uris alanıyla tanımlarsınız. Bkz. Uygulama oluşturma.
Akış, uygulamanızın türüne göre değişir.
- Birinci taraf uygulama
- Üçüncü taraf uygulama
Geçerli bir
id_token_hint varsa çıkış GET isteğinde hemen yapılır. Kullanıcı post_logout_redirect_uri?state=... adresine yönlendirilir.- Geçerli bir
id_token_hintvarsa o kullanıcının, o uygulamaya ait tüm geçerli access token’larını ve refresh token’larını iptal eder. - Kimlik sunucusundaki oturumu yalnızca bu cihazda kapatır. Kullanıcının diğer cihazlardaki oturumları açık kalır.
post_logout_redirect_urikayıtlı bir adresle eşleşmiyorsa kullanıcıyı yönlendirmez; Çıkış Yapıldı sayfasını gösterir.
id_token_hint yoksa veya geçersizse hiçbir token iptal edilmez ve post_logout_redirect_uri yok sayılır. Kullanıcı her durumda onay sayfasını görür. client_id parametresi kabul edilir ama kullanılmaz; uygulama id_token_hint içindeki aud değerinden bulunur.