SSO yapılandırması referansı
Tek oturum açmayla ilgili yapılandırılabilir her şey tek bir yerde. Değerler
global.db içindeki sso_connections satırlarında yaşar (tasarım gereği
sunucu genelinde) ve Ayarlar → Sunucu → Tek oturum açma ekranından ya da
sso.* RPC işlemleriyle düzenlenir. Kaydedilen satır tek doğruluk kaynağıdır —
CC_SAML_* / CC_OIDC_* ortam yolu yoktur (iki yerden gelebilen bir bağlantı,
ayarlar ekranının çelişebileceği bir bağlantıdır).
Bağlantı alanları
Bölüm başlığı “Bağlantı alanları”| Alan | Geçerli olduğu | Varsayılan | Anlamı |
|---|---|---|---|
enabled |
her ikisi | kapalı | oturum açmalar bu bağlantıyı kullanabilir |
idpMetadataXml |
SAML | — | IdP’nin EntityDescriptor XML’i (etkinleştirmek için gerekli) |
spEntityId |
SAML | <origin>/saml |
origin değişebildiği için sabitlenen varlık kimliğimiz |
emailAttribute |
SAML | email |
e-postayı taşıyan öznitelik; e-posta biçimli bir NameID yedektir |
displayNameAttribute |
SAML | displayName |
görünen ad özniteliği |
groupsAttribute |
SAML | groups |
grup adları özniteliği |
clockSkewSeconds |
SAML | 90 | yaşam süresi doğrulaması için saat kayması payı |
allowIdpInitiated |
SAML | kapalı | istem dışı Response’ları kabul et (InResponseTo yok) |
wantResponseSigned |
SAML | kapalı | Response kökünde imza zorunlu kıl (assertion imzaları her zaman zorunludur) |
issuer |
OIDC | — | issuer temel URL’si (etkinleştirmek için gerekli) |
clientId |
OIDC | — | herkese açık istemci kimliği (etkinleştirmek için gerekli) |
clientSecret |
OIDC | — | yalnızca gizli istemciler için; 0600 secrets dosyasında saklanır, asla veritabanında değil — RPC üzerinden yalnızca yazılabilir (sso.getConfig clientSecretPresent bildirir) |
groupsClaim |
OIDC | groups |
grup adlarını taşıyan claim |
defaultRole |
her ikisi | member |
hiçbir grup eşlenmediğinde rol — asla owner |
groupRoleMap |
her ikisi | {} |
grup → rol; owner eşlemeleri kaydetme sırasında reddedilir |
autoMember |
her ikisi | açık | ilk oturum açmada kullanıcıları her çalışma alanına otomatik ekle |
allowJit |
her ikisi | açık | oturum açmada bilinmeyen kullanıcıları sağla |
Süreç yapılandırması
Bölüm başlığı “Süreç yapılandırması”SSO bağlantıları ortamdan beslenmez. Geriye kalan tek süreç bayrağı, bağlantı satırıyla değil tarayıcı devri ile ilgilidir:
| Değişken / bayrak | Anlamı |
|---|---|
--web-client-url / CC_SERVER_WEB_CLIENT_URL |
SSO geri çağırmalarının tarayıcıyı yönlendirdiği origin (kimlik bilgisi URL fragment’ında taşınır). Ayarlanmazsa devir aynı origin’de kalır. |
Issuer URL’sinin kendisi https olmalıdır (http yalnızca loopback
issuer’ları localhost, 127.0.0.1 ve ::1 için kabul edilir).
HTTP uç noktaları
Bölüm başlığı “HTTP uç noktaları”| Uç nokta | Kimlik doğrulama | Amaç |
|---|---|---|
GET /saml/login?relay=… |
yok (yönlendirme) | SP tarafından başlatılan oturum açmayı başlatır; relay=desktop uygulamaya devreder, relay=web-popup bekleyen bağlanma sekmesine postMessage gönderir (sekme kendi client_origin değerini bildirir; yalnızca origin izin listesi ona güveniyorsa dikkate alınır) |
POST /saml/acs |
yok (IdP POST) | assertion tüketicisi — doğrular, sağlar, üretir |
GET /saml/metadata |
yok | SP EntityDescriptor’ımız |
GET /oidc/login?relay=… / GET /oidc/callback |
yok | OIDC gidiş-dönüşü; relay=desktop uygulamaya devreder, relay=web-popup bekleyen bağlanma sekmesine (aynı client_origin kuralı) |
GET /auth/providers |
yok, CORS * |
bağlanma ekranı yoklaması: sunulan SSO bağlantıları (id/kind/label) + pairingEnabled |
/scim/v2/Users… |
Bearer (SCIM token’ı) | Users oluşturma/get/listeleme+filtreleme/PUT/PATCH/DELETE |
/scim/v2/Groups |
Bearer | salt okunur; grup push’u tasarım gereği 501 yanıtı verir |
/scim/v2/ServiceProviderConfig |
Bearer | yetenek belgesi |
RPC işlemleri
Bölüm başlığı “RPC işlemleri”Tüm sso.* işlemleri sunucu kapsamlıdır ve sunucu sahibiyle sınırlıdır
(kurulumun işletmecisi, ServerAuthority.serverOwner). Bir çalışma alanına
sahip olmak yeterli değildir; eşleştirme tek başına bunları asla vermez.
| İşlem | Amaç |
|---|---|
sso.getConfig |
bir tür için kaydedilmiş bağlantı |
sso.saveConfig |
doğrular, kalıcı hâle getirir ve canlı uygular |
sso.status |
etkin/yapılandırılmış bayraklar, SCIM token’ının varlığı, kurallı origin |
sso.testConnection |
tarayıcı gidiş-dönüşü dışında bir bağlantıyı dener (SAML: metadata ayrıştırma + AuthnRequest oluşturma; OIDC: issuer keşfi); ekrandaki kaydedilmemiş değerleri isteğe bağlı olarak kullanır |
sso.spMetadata |
bir origin için SP EntityDescriptor’ını üretir |
sso.setPairingEnabled |
elle eşleştirmeye izin verir/yasaklar (davet kodları, eşleştirme anahtarları); çalışan bir SSO bağlantısı yokken bunu devre dışı bırakmayı reddetmek kilitlenmeye karşı korur |
sso.sessionPolicy |
kurulumun cihaz kimlik bilgisi azami yaşını ve boşta kalma zaman aşımını okur (dakika; 0 = ayarlanmamış) |
sso.setSessionPolicy |
bu sınırları belirler; cihaz denetiminde uygulanır, istemcilere duyurulmaz |
sso.scimRegenerateToken |
SCIM bearer token’ını üretir + döndürür (bir kez) |
Doğrulama hata kodları
Bölüm başlığı “Doğrulama hata kodları”cc_saml_verify_response hataları kararlı bir kod taşır:
| Kod | Anlamı |
|---|---|
signature |
eksik/güvenilmeyen/kurcalanmış imza ya da izin verilmeyen algoritma/dönüşüm |
expired |
NotBefore/NotOnOrAfter dışında (kaymanın ötesinde) |
audience |
audience kısıtlaması bizi adlandırmıyor |
destination |
yanıt destination’ı bizim ACS’imiz değil |
request_match |
InResponseTo bekleyen bir istekle eşleşmiyor ya da izin verilmediği hâlde istem dışı |
issuer |
issuer yapılandırılmış IdP değil |
recipient |
subject doğrulama alıcısı bizim ACS’imiz değil |
malformed |
XML/şema düzeyinde hata |
status |
IdP’nin bildirdiği durum Success değildi |
invalid / internal |
diğer her şey / seam hatası |
Veritabanı yüzeyleri
Bölüm başlığı “Veritabanı yüzeyleri”sso_connections(global.db) — tür başına bir satır, TASARIM GEREĞİ ÇALIŞMA ALANLARI ARASI.users.sso_subject+users.sso_issuer— sağlayıcı subject sabitlemesi, kısmi bir dizin aracılığıyla(issuer, subject)başına benzersiz.users.deactivated_at— SCIM devre dışı bırakma damgası.- SCIM bearer token’ı ve OIDC client secret’ı 0600 izinli secrets dosyasında yaşar, asla veritabanında değil.