Skip to main content
Flextell, OAuth 2.0 üzerine OpenID Connect 1.0 katmanı sunar. OIDC sayesinde yalnızca API’ye erişim değil, kullanıcının kimliğini doğrulama (sign-in) akışı da kurabilirsiniz — Flextell’i bir “Sign in with Flextell” identity provider olarak kullanabilirsiniz.
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

Çoğu OIDC kütüphanesi (örn. openid-client Node, python-jose + authlib, AppAuth iOS/Android) yalnızca issuer URL’ini verdiğinizde discovery’yi otomatik yapar. Uçları manuel yazmak yerine bu yolu tercih edin.

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 gelen id_token’ı backend’inizde mutlaka doğrulamanız gerekir. Asla imza kontrol etmeden güvenmeyin:
1

JWKS uçtan genel anahtarı çekin

Bu URL, RS256 doğrulaması için gereken RSA public key’leri JWK formatında döner. Kütüphaneniz bu anahtarı cache’leyebilir.
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

  • isshttps://dev.flextell.ai veya https://app.flextell.ai olmalı.
  • aud → sizin client_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

Dönen alanlar access token’da onaylanmış scope’lara göre filtrelenir. Örneğin token’da yalnızca 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 uygulamalar client_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ı.