Ana içeriğe geç

SSO sayfaları

SSO akışına dahil her UI yüzeyi. Zihinsel model için Kimlik ve SSO; kurulum için Admin → Global SSO yapılandır veya Admin → Org bazlı SSO yapılandır.

/login — seçici​

Anonim kullanıcılar buraya düşer. Sayfa nasıl giriş yapılacağını sorar.

ElemanDavranış
Email + password formuLocal-password yolu. require_sso=true bloklamadıkça mevcut.
Sign in with SSO butonuRealm seçici dialog'unu açar (aşağıda)
Register linkiYalnızca public registration etkin ve lisans yeni kullanıcı izin veriyorsa görünür

Sayfa baştan org'a özgü SSO butonları göstermez — bunlar sonraki adımın sorduğu realm slug'ı gerektirir.

/login realm seçici (modal)​

Sign in with SSO tıkla → küçük dialog:

FieldNotlar
Organization realmOrg slug'ınızı yazın (örn. acme). Global SSO için boş bırakın.
Continue butonuSlug ile /api/auth/discovery'ye POST atar

Discovery yanıtı sonraki adımı şekillendirir:

  • oidc butonu → org'un IdP'si bulundu, tıklayıp redirect'i başlat
  • oidc (global) → org bazlı IdP yok, global'e düşülüyor
  • local butonu → hiç SSO yok, password'e dönüyorsunuz
  • Hiç buton yok → "No SSO provider for that realm" hatası (slug yok VEYA var ama SSO'su yok ve global de yapılandırılmamış)

/sso — başlangıç​

URL: /sso?slug=<org-slug>&redirect=<post-login-path>

Bu route kısa ömürlü. Tarayıcı buna gelir, backend şifreli state token üretir, sizi IdP'nin authorization URL'sine redirect eder. Normal akışta bu sayfayı görmemeniz lazım — server-side bounce.

GÖRÜRSENİZ (boş ekran, redirect yok): SSO config'in issuer URL'i bozuk veya discovery çağrısı fail oldu. Backend log'larını kontrol edin.

IdP redirect​

Tarayıcınız artık IdP'de (Auth0, Keycloak, Okta, Azure AD, …). dtedge UI'nin burada görünürlüğü yok. IdP'nin istediği şekilde kimlik doğrularsınız — password, MFA, hardware token, ne ise.

Başarıda IdP sizi /sso/callback?code=...&state=...'a redirect eder.

/sso/callback — server-side​

/sso gibi kısa ömürlü. Backend:

  1. state decode eder, freshness doğrular (10 dk pencere)
  2. code'u ID + access token'larla takas eder
  3. ID token imzasını IdP'nin JWKS'ine karşı doğrular
  4. nonce'un state'e koyduğumuzla eşleştiğini doğrular
  5. Claim'leri (email, name, sub, groups) çıkarır
  6. Kullanıcıyı link / provision eder
  7. Group mapping'den rolleri reconcile eder (yapılandırılmışsa)
  8. Bir dtedge JWT issue eder
  9. /sso/finish?token=<jwt>'e redirect eder

/sso/finish — token landing​

Taze basılmış dtedge JWT'sini alan sayfa. Token'ı localStorage'a saklar ve orijinal destination'a (veya default /'a) redirect eder.

Normal akışta bu sayfayı bir saniyenin kesirinde görürsünüz. Takılı görürseniz JavaScript veya storage devre dışı olabilir.

/sso/error — başarısızlık landing​

SSO başarısızlıklarının düştüğü yer. URL sorgu paramı olarak hata kodu taşır:

KodAnlam
INVALID_STATEState token eksik, expire olmuş veya tamper edilmiş. Tekrar dene.
STATE_EXPIREDState token 10 dakikadan eskidi (IdP login sayfasında uzun oturdunuz). Tekrar dene.
NONCE_MISMATCHID token nonce'u gönderdiğimizle eşleşmiyor. Tamper veya bayat tarayıcı sekmesi.
ID_TOKEN_INVALIDIdP malformed token döndü. IdP tarafını kontrol et.
PROVIDER_GONELogin'i başlatmanızla geri gelmeniz arasında SSO config silindi. Admin sorunu.
EMAIL_CLAIM_MISSINGIdP email claim göndermedi. IdP scope'unu düzelt.
NOT_PROVISIONEDAuto-provision kapalı ve siz henüz dtedge'de yoksunuz. Admin önce davet etmeli.
LINK_FAILEDIdentity link sırasında internal failure. Backend log'unda detay.

Organizations → <org> → SSO sekmesi​

Org admin'in org bazlı SSO config sayfası. Form:

BölümField'lar
ProviderIssuer URL, Client ID, Client secret
Scopes + claim'lerScopes (boşlukla ayrılmış), Claim mappings (email/name/groups)
ProvisioningAuto-provision toggle, Default role dropdown
Group → role mappingAdd row (IdP grup adı → org role dropdown)
PolicyRequire SSO toggle
URI'lerRedirect URI, Back-Channel Logout URI, Post-Logout Redirect URI (read-only; IdP app config'ine yapıştırmak için)
ActionsSave / Remove

Her save PingIssuer (discovery URL yanıt vermeli) çalıştırır ve her mapping satırının role'ünün var olduğunu doğrular.

Admin → Settings → Global SSO​

Super-admin'in install-wide SSO'su. Org bazlı ile aynı shape, artı:

BölümField'lar
Org-rol atamaları(IdP grubu, org, role) satır grid'i; role dropdown seçilen org'un rolleriyle filtrelenir

Default role field'ı bu yüzeyde gizlidir (global SSO için daha az anlamlı — org-rol atama grid'i genelde rolü yerleştirir).

Bkz.​