Protocoles SSO : les bases¶
Pourquoi le SSO ?¶
Le Single Sign-On (SSO), ou authentification unique, évite à l’utilisateur de saisir ses identifiants dans chaque application. Une application délègue la vérification de l’identité à un service de confiance. Une fois authentifié, l’utilisateur peut accéder à d’autres applications compatibles, selon les sessions et règles de sécurité configurées.
Le SSO ne signifie pas que toutes les applications partagent un mot de passe ou une session technique unique. Chaque application valide un message ou un jeton selon un protocole. L’autorisation métier demeure sous la responsabilité de l’application, même si Keycloak fournit des rôles ou attributs.
Comment les rôles coopèrent-ils ?¶
- Fournisseur d’identité (IdP) : authentifie l’utilisateur et émet une preuve d’identité. Keycloak peut jouer ce rôle.
- Fournisseur de services (SP) : terme courant dans SAML pour l’application qui délègue l’authentification.
- Relying Party (RP) : terme OIDC pour l’application cliente qui fait confiance à un fournisseur OIDC.
- Navigateur / agent utilisateur : transporte fréquemment les redirections entre l’application et l’IdP.
- Annuaire d’utilisateurs : peut être interne à Keycloak ou externe (par ex. LDAP/Active Directory).
Pour OIDC, on parle surtout d’OP (OpenID Provider, le fournisseur OIDC) et de RP. Pour SAML, on parle d’IdP et de SP. Ces rôles sont analogues, mais les protocoles et leurs objets ne sont pas interchangeables.
sequenceDiagram
actor U as Utilisateur
participant B as Navigateur
participant A as Application (RP / SP)
participant I as Keycloak (IdP / OP)
U->>B: Demande une ressource protégée
B->>A: Accès à l'application
A-->>B: Redirection vers Keycloak
B->>I: Demande d'authentification (OIDC ou SAML)
I->>U: Authentification et éventuel MFA
U->>I: Preuve d'identification
I-->>B: Code OIDC ou réponse SAML
B->>A: Retour de protocole
A->>I: Échange / validation côté serveur si requis
A-->>U: Session applicative et page autorisée
Session et déconnexion¶
Une session Keycloak représente la connexion de l’utilisateur au realm ; une session applicative est créée par chaque application après validation du résultat. Elles ont des durées et des cycles de vie distincts. La suppression de l’une n’entraîne pas toujours immédiatement la suppression de l’autre. OIDC propose notamment des mécanismes de déconnexion et SAML des messages de logout, mais leur prise en charge dépend des clients, des URL, des versions et de la configuration. Les jetons déjà émis peuvent rester valides jusqu’à expiration, sauf contrôles supplémentaires.
OIDC et SAML 2.0 en bref¶
| Aspect | OpenID Connect (OIDC) | SAML 2.0 |
|---|---|---|
| Fondations | Couche d’identité au-dessus d’OAuth 2.0 | Norme XML d’échange d’assertions et de protocoles SSO |
| Format habituel | JSON / JWT (JWS, parfois JWE) | XML, souvent signé ; chiffrement possible |
| Éléments centraux | ID token, access token, claims, endpoints | Assertion, AuthnRequest, Response, métadonnées |
| Échanges navigateur | Redirections HTTP, retour avec code, puis échange de jeton | HTTP-Redirect et HTTP-POST, selon les messages |
| Usages courants | Applications web modernes, mobiles et API | SSO d’entreprise et applications historiques / SaaS |
| Découverte / configuration | Document OIDC Discovery et JWKS | Métadonnées XML de l’IdP et du SP |
| Vocabulaire | OP et RP ; client OAuth | IdP et SP |
| Consommation | Bibliothèque OIDC, validation des jetons et claims | Bibliothèque SAML, validation XML/signatures et conditions |
Le choix dépend des capacités de l’application, des exigences de l’organisation et de l’écosystème existant. OIDC n’est pas « OAuth avec un nom différent » : OAuth délègue l’accès à une ressource, tandis qu’OIDC ajoute une couche standard d’authentification. Voir OIDC en détail et SAML 2.0 en détail.