Issuer nedir; OIDC discovery document (.well-known/openid-configuration) ne işe yarar?
Kısa cevap
Issuer, token üreten IdP'nin kimliğidir; bir HTTPS adresidir (ör. https://login.example.com/realms/company) ve ürettiği her ID token'ın iss claim'inde yazılıdır. Uygulama token'ın beklenen issuer tarafından üretildiğini bu değerle doğrular. OIDC discovery document ise issuer adresinin sonuna /.well-known/openid-configuration eklenerek erişilen ve sağlayıcının authorization, token, user info ve JWKS endpoint'lerini, desteklediği scope'ları ve yöntemleri listeleyen JSON belgesidir; endpoint'leri tek tek elle girme ihtiyacını ortadan kaldırır (OpenID Connect Discovery 1.0). TR7 AGS'de Custom Provider seçili OAuth2 ya da OpenID Connect formundaki Fetch Endpoints from Issuer butonu açılan pencerede Issuer URL ve Route Table ister; TR7 belgeyi seçilen route table üzerinden kendisi çeker ve endpoint alanlarını doldurur. SAML 2.0'daki karşılığı IdP Entity ID (issuer) alanıdır; girildiğinde başka bir issuer'dan gelen SAML yanıtları reddedilir.
TR7'de Nerede Kullanılır
| Nerede | Alan / etiket | Ne için |
|---|---|---|
| AGS → Authentication → Authentication Providers (OAuth2, OpenID Connect; Custom Provider) | Fetch Endpoints from Issuer → Issuer URL, Route Table (varsayılan: profilin Namespace değeri) | Discovery document'ın çekilmesi; Issuer URL yalnızca bu işlem için girilir, profile kaydedilmez |
| Aynı form | Authorization URL, Token URL, User Info URL, Logout URL, Token Revocation URL, JWKS URI | Discovery document'tan doldurulan endpoint'ler |
| Aynı form | OAuth Scopes, Enable PKCE, Client Authentication | Sağlayıcının duyurduğu scope'lara, PKCE ve client authentication yöntemlerine göre ayarlanan alanlar |
| AGS → Authentication → Authentication Providers (SAML 2.0) | IdP Entity ID (issuer) | SAML yanıtlarında beklenen issuer |
Discovery ile Hangi Alanlar Dolar?
| Discovery document alanı | TR7 alanı |
|---|---|
authorization_endpoint, token_endpoint | Authorization URL, Token URL (belgede bu iki alan yoksa işlem başarısız olur) |
userinfo_endpoint, end_session_endpoint, revocation_endpoint | User Info URL, Logout URL, Token Revocation URL (belgede varsa) |
jwks_uri | JWKS URI; yalnızca OpenID Connect türünde |
scopes_supported | OAuth scopes: openid, profile, email'den duyurulanlar |
code_challenge_methods_supported içinde S256 | Enable PKCE açılır, yöntem SHA256 |
token_endpoint_auth_methods_supported | Client authentication: client_secret_post, client_secret_basic, none sırasıyla desteklenen ilki |
Belge başarıyla alındığında "Endpoint fields were filled from the issuer's discovery document" iletisi görünür; hata iletisi "Discovery failed:" ile başlar.
Sık Karıştırılan Noktalar
- "Issuer sağlayıcının web sitesi adresidir." Issuer, sağlayıcının kimlik servisinin adresidir (çoğunlukla
accounts.,login.ya daid.ile başlar); token'dakiissdeğeriyle birebir aynı olmalıdır, sondaki/bile fark yaratır. - "Discovery bir kez yapılınca TR7 endpoint değişikliklerini kendiliğinden izler." TR7 belgeyi yalnızca Fetch Endpoints from Issuer kullanıldığı anda okur; sağlayıcı endpoint'lerini değiştirirse işlem yeniden yapılır ya da alanlar elle güncellenir.
- "Hazır sağlayıcılarda da discovery gerekir." Hazır sağlayıcılarda endpoint'ler TR7'nin kataloğundan gelir; buton yalnızca Custom Provider'da görünür.
Dokümantasyonda nasıl yapılır
