Hoppa till innehåll

Referens för SSO-konfiguration

Allt som går att konfigurera för enkel inloggning, på ett ställe. Värdena ligger i sso_connections-raderna i global.db (serverövergripande av design) och redigeras via Inställningar → Server → Enkel inloggning eller sso.*-RPC-operationerna. Den sparade raden är den enda källan till sanning — det finns ingen väg via miljövariablerna CC_SAML_* / CC_OIDC_* (en anslutning som kan komma in från två håll är en som inställningsskärmen kan säga emot).

Fält Gäller Standard Betydelse
enabled båda av inloggningar får använda den här anslutningen
idpMetadataXml SAML — IdP:ns EntityDescriptor-XML (krävs för att aktivera)
spEntityId SAML <origin>/saml vårt entity ID, fäst när origin varierar
emailAttribute SAML email attributet som bär e-postadressen; ett NameID i e-postform är reserven
displayNameAttribute SAML displayName attributet för visningsnamn
groupsAttribute SAML groups attributet för gruppnamn
clockSkewSeconds SAML 90 tillåten klockskevning vid livstidsvalidering
allowIdpInitiated SAML av acceptera oombedda Responses (utan InResponseTo)
wantResponseSigned SAML av kräv en signatur på Response-roten (assertion-signaturer krävs alltid)
issuer OIDC — utfärdarens bas-URL (krävs för att aktivera)
clientId OIDC — publik klient-ID (krävs för att aktivera)
clientSecret OIDC — endast konfidentiella klienter; lagras i hemlighetsfilen med 0600, aldrig i databasen — endast skrivbar över RPC (sso.getConfig rapporterar clientSecretPresent)
groupsClaim OIDC groups claimet som bär gruppnamn
defaultRole båda member rollen när ingen grupp mappar — aldrig owner
groupRoleMap båda {} grupp → roll; ägarmappningar avvisas vid sparande
autoMember båda på lägg automatiskt till användare i varje arbetsyta vid första inloggningen
allowJit båda på provisionera okända användare vid inloggning

SSO-anslutningar seedas inte från miljön. En kvarvarande processflagga handlar om överlämningen till webbläsaren, inte om anslutningsraden:

Variabel / flagga Betydelse
--web-client-url / CC_SERVER_WEB_CLIENT_URL origin som SSO-callbackarna studsar webbläsaren till (inloggningsuppgiften färdas i URL-fragmentet). Om den inte är satt hålls överlämningen inom samma origin.

Själva utfärdar-URL:en måste vara https (http accepteras bara för loopback-utfärdarna localhost, 127.0.0.1 och ::1).

Slutpunkt Autentisering Syfte
GET /saml/login?relay=… ingen (omdirigering) startar SP-initierad inloggning; relay=desktop lämnar över till appen, relay=web-popup postMessage:ar till fliken som väntar på anslutning (som deklarerar sin client_origin, vilket bara godtas när origin-tillåtelselistan litar på den)
POST /saml/acs ingen (IdP-POST) assertion-konsumenten — verifierar, provisionerar, utfärdar
GET /saml/metadata ingen vår SP EntityDescriptor
GET /oidc/login?relay=… / GET /oidc/callback ingen OIDC-rundturen; relay=desktop lämnar över till appen, relay=web-popup till fliken som väntar på anslutning (samma client_origin-konvention)
GET /auth/providers ingen, CORS * proben från anslutningsskärmen: erbjudna SSO-anslutningar (id/kind/label) + pairingEnabled
/scim/v2/Users… Bearer (SCIM-token) Users create/get/list+filter/PUT/PATCH/DELETE
/scim/v2/Groups Bearer endast läsning; grupp-push svarar 501 av design
/scim/v2/ServiceProviderConfig Bearer kapabilitetsdokument

Alla sso.*-operationer gäller hela servern och är förbehållna serverägaren (installationens operatör, ServerAuthority.serverOwner). Att äga en arbetsyta räcker inte; enbart parkoppling ger dem aldrig.

Operation Syfte
sso.getConfig den sparade anslutningen för en typ
sso.saveConfig validerar, sparar och tillämpar direkt
sso.status flaggor för aktiverad/konfigurerad, om SCIM-token finns, kanoniskt origin
sso.testConnection testar en anslutning utan webbläsarrundturen (SAML: metadata-tolkning + AuthnRequest-bygge; OIDC: utfärdarens discovery), med valfria osparade värden från skärmen
sso.spMetadata genererar SP EntityDescriptor för ett origin
sso.setPairingEnabled tillåter/förbjuder manuell parkoppling (inbjudningskoder, parkopplingsnycklar); att vägra stänga av den medan ingen fungerande SSO-anslutning finns skyddar mot utelåsning
sso.sessionPolicy läser installationens maxålder och inaktivitetstimeout för enhetsuppgifter (minuter; 0 = inte satt)
sso.setSessionPolicy sätter de gränserna; tillämpas vid enhetskontrollen, annonseras inte till klienter
sso.scimRegenerateToken genererar + returnerar SCIM-bearer-token (en gång)

Fel i cc_saml_verify_response bär en stabil kod:

Kod Betydelse
signature saknad/ej betrodd/manipulerad signatur, eller en otillåten algoritm/transform
expired utanför NotBefore/NotOnOrAfter (bortom skevningen)
audience audience-begränsningen namnger inte oss
destination svarets destination är inte vår ACS
request_match InResponseTo matchar ingen väntande begäran, eller är oombett medan det inte är tillåtet
issuer utfärdaren är inte den konfigurerade IdP:n
recipient subject-confirmation-mottagaren är inte vår ACS
malformed fel på XML-/schemanivå
status statusen som IdP:n rapporterade var inte Success
invalid / internal allt annat / fel i sömmen
  • sso_connections (global.db) — en rad per typ, GEMENSAM FÖR ALLA ARBETSYTOR AV DESIGN.
  • users.sso_subject + users.sso_issuer — fästningen av leverantörens subject, unik per (issuer, subject) via ett partiellt index.
  • users.deactivated_at — stämpeln för SCIM-inaktivering.
  • SCIM-bearer-token och OIDC-klienthemligheten ligger i hemlighetsfilen med 0600, aldrig i databasen.