Skip to main content
Flextell oturum açma işlemini OAuth 2.0 ve OpenID Connect (OIDC) ile yürütür. Kimlik sunucusu 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.
Üretim ortamının yanıtı (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.
auth_time, azp ve at_hash claim’leri üretilmez. Ayrıca refresh_token ile yenilemede dönen yeni id_token nonce içermez. nonce kontrolünü yalnızca yetkilendirme kodunu değiştirdiğiniz ilk yanıtta yapın.
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.
Yanıt, access token’ın scope’larına göre süzülür. 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.
Aldığınız 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.
Access token’lar da RS256 ile imzalanmış JWT’lerdir ancak iss claim’i taşımazlar. Access token’ı istemci tarafında çözümleyip içeriğine güvenmeyin; kullanıcı bilgisi için id_token veya UserInfo endpoint’ini kullanın.

Çı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.
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.
Çıkış şunları yapar.
  • Geçerli bir id_token_hint varsa 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_uri kayı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.
Token’ları çıkış dışında iptal etmenin yolları için Tokenlar sayfasına bakın. Protokol hataları için Kimlik doğrulama hataları sayfasını kullanın.