Aller au contenu

Référence de configuration SSO

Tout ce qui est configurable au sujet de l’ouverture de session unique, au même endroit. Les valeurs résident dans les lignes sso_connections de global.db (à l’échelle du serveur par conception) et se modifient par Paramètres → Serveur → Authentification unique ou par les opérations RPC sso.*. La ligne enregistrée est la seule source de vérité — il n’existe aucun chemin par variable d’environnement CC_SAML_* / CC_OIDC_* (une connexion susceptible d’arriver de deux endroits est une connexion avec laquelle l’écran des paramètres peut être en désaccord).

Champ S’applique à Valeur par défaut Signification
enabled les deux désactivé les ouvertures de session peuvent utiliser cette connexion
idpMetadataXml SAML — le XML EntityDescriptor de l’IdP (requis pour l’activer)
spEntityId SAML <origin>/saml notre identifiant d’entité, épinglé lorsque l’origine varie
emailAttribute SAML email attribut qui porte le courriel ; un NameID en forme de courriel sert de solution de repli
displayNameAttribute SAML displayName attribut du nom d’affichage
groupsAttribute SAML groups attribut des noms de groupes
clockSkewSeconds SAML 90 tolérance de décalage pour la validation de la durée de vie
allowIdpInitiated SAML désactivé accepter les Response non sollicitées (sans InResponseTo)
wantResponseSigned SAML désactivé exiger une signature à la racine de l’élément Response (les signatures d’assertion sont toujours exigées)
issuer OIDC — URL de base de l’émetteur (requise pour l’activer)
clientId OIDC — identifiant de client public (requis pour l’activer)
clientSecret OIDC — clients confidentiels seulement ; conservé dans le fichier de secrets en 0600, jamais dans la base de données — en écriture seule par RPC (sso.getConfig rapporte clientSecretPresent)
groupsClaim OIDC groups revendication qui porte les noms de groupes
defaultRole les deux member rôle lorsqu’aucun groupe ne correspond — jamais owner
groupRoleMap les deux {} groupe → rôle ; les correspondances vers le rôle owner sont refusées à l’enregistrement
autoMember les deux activé ajouter automatiquement les utilisateurs à chaque espace de travail à la première connexion
allowJit les deux activé provisionner les utilisateurs inconnus à la connexion

Les connexions SSO ne sont pas amorcées à partir de l’environnement. Il reste un paramètre du processus qui concerne la transmission au navigateur, et non la ligne de connexion :

Variable / option Signification
--web-client-url / CC_SERVER_WEB_CLIENT_URL origine vers laquelle les rappels d’ouverture de session unique font rebondir le navigateur (l’identifiant voyage dans le fragment de l’URL). Non définie, la transmission reste de même origine.

L’URL de l’émetteur elle-même doit être https (http n’est accepté que pour les émetteurs de bouclage localhost, 127.0.0.1 et ::1).

Point de terminaison Authentification Objet
GET /saml/login?relay=… aucune (redirection) démarrer une ouverture de session amorcée par le SP ; relay=desktop transmet la main à l’application, relay=web-popup envoie un postMessage à l’onglet de connexion en attente (qui déclare son client_origin, pris en compte seulement lorsque la liste d’origines autorisées lui fait confiance)
POST /saml/acs aucune (POST de l’IdP) le consommateur d’assertions — vérifie, provisionne, émet
GET /saml/metadata aucune notre EntityDescriptor de SP
GET /oidc/login?relay=… / GET /oidc/callback aucune l’aller-retour OIDC ; relay=desktop transmet la main à l’application, relay=web-popup à l’onglet de connexion en attente (même convention client_origin)
GET /auth/providers aucune, CORS * la sonde de l’écran de connexion : les connexions SSO proposées (id/kind/label) + pairingEnabled
/scim/v2/Users… Bearer (jeton SCIM) Users : création, lecture, liste et filtre, PUT, PATCH, DELETE
/scim/v2/Groups Bearer en lecture seule ; la poussée de groupes répond 501 par conception
/scim/v2/ServiceProviderConfig Bearer document de capacités

Toutes les opérations sso.* ont la portée du serveur et sont réservées au propriétaire du serveur (l’exploitant de l’installation, ServerAuthority.serverOwner). Être propriétaire d’un espace de travail ne suffit pas ; l’appairage seul ne les accorde jamais.

Opération Objet
sso.getConfig la connexion enregistrée pour un type donné
sso.saveConfig valider, persister et appliquer à chaud
sso.status indicateurs activé/configuré, présence du jeton SCIM, origine canonique
sso.testConnection tester une connexion sans passer par l’aller-retour dans le navigateur (SAML : analyse des métadonnées + construction de l’AuthnRequest ; OIDC : découverte de l’émetteur), avec des valeurs à l’écran non enregistrées en option
sso.spMetadata émettre l’EntityDescriptor de SP pour une origine
sso.setPairingEnabled autoriser ou interdire l’appairage manuel (codes d’invitation, clés d’appairage) ; refuser de le désactiver tant qu’aucune connexion SSO fonctionnelle n’existe protège contre la perte d’accès au serveur
sso.sessionPolicy lire l’âge maximal des identifiants d’appareil de l’installation et le délai d’inactivité (en minutes ; 0 = non défini)
sso.setSessionPolicy définir ces limites ; appliquées à la vérification de l’appareil, sans être communiquées aux clients
sso.scimRegenerateToken générer et retourner le jeton porteur SCIM (une seule fois)

Les échecs de cc_saml_verify_response portent un code stable :

Code Signification
signature signature absente, non approuvée ou falsifiée, ou algorithme/transformation non autorisé
expired hors de NotBefore/NotOnOrAfter (au-delà du décalage)
audience la restriction d’audience ne nous désigne pas
destination la destination de la réponse n’est pas notre ACS
request_match InResponseTo ne correspond à aucune requête en attente, ou réponse non sollicitée alors qu’elle est interdite
issuer l’émetteur n’est pas l’IdP configuré
recipient le destinataire de la confirmation du sujet n’est pas notre ACS
malformed échec au niveau XML/schéma
status le statut rapporté par l’IdP n’était pas Success
invalid / internal tout le reste / défaillance de jointure
  • sso_connections (global.db) — une ligne par type, PARTAGÉ ENTRE TOUS LES ESPACES DE TRAVAIL PAR CONCEPTION.
  • users.sso_subject + users.sso_issuer — l’épinglage du sujet du fournisseur, unique par (issuer, subject) grâce à un index partiel.
  • users.deactivated_at — l’estampille de désactivation SCIM.
  • Le jeton porteur SCIM et le secret client OIDC résident dans le fichier de secrets en 0600, jamais dans la base de données.