Comprendre comment SAML permet l'authentification unique (SSO) pour les entreprises en permettant aux utilisateurs de s'authentifier via un fournisseur d'identité (IdP) centralisé.
Table des matières
- Qu'est-ce que SAML?
- Comment SAML fonctionne
- SAML contre OIDC
- Avantages de SAML
- Explication des assertions SAML
- Mise en œuvre de SAML SSO
- Considérations de sécurité
- Troubleshooting
- Glossaire
Qu'est-ce que SAML?
SAML (Security Assertion Markup Language) est une norme ouverte basée sur XML utilisée pour l'authentification unique (SSO) sur plusieurs domaines. Il permet aux utilisateurs de se connecter une seule fois à l'aide d'un fournisseur d'identité (IdP) central et d'accéder à plusieurs applications (fournisseurs de services ou SP) sans avoir à saisir à nouveau les informations d'identification.
- Développé par le consortium OASIS
- Couramment utilisé dans les environnements d'entreprise
- Compatible avec les fournisseurs d’identité comme Okta, Azure AD, OneLogin, etc.
Comment SAML fonctionne
- L'utilisateur tente d'accéder à une ressource protégée (fournisseur de services).
- SP redirige l'utilisateur vers le fournisseur d'identité (IdP).
- L'utilisateur s'authentifie auprès de l'IdP (p. ex. avec des informations d'identification d'entreprise).
- IdP envoie une réponse SAML, contenant une assertion, au fournisseur de services.
- SP valide la réponse, extrait les données d'identité et connecte l'utilisateur.
SAML contre OIDC
| Caractéristique |
SAML |
Connexion OpenID (OIDC) |
| Type de protocole |
XML |
JSON et REST (OAuth 2.0) |
| Cas d'utilisation populaire |
SSO d'entreprise |
Connexion à l'application Web/mobile |
| Mécanisme de transport |
Redirections du navigateur (POST/Redirect) |
JSON sur HTTPS |
| Type de jeton |
Assertion SAML (XML) |
Jeton d'identification (JWT) |
| Complexité |
Supérieur |
Inférieure |
| Utilisation moderne |
Diminution |
Augmentation |
✅ Utilisez SAML pour l'authentification unique d'entreprise, OIDC pour les applications modernes et les API.
Avantages de SAML
- SSO entre les applications en utilisant une seule connexion
- Réduction de la fatigue liée aux mots de passe et du risque de réutilisation des identifiants
- Gestion centralisée des utilisateurs via IdP d'entreprise
- Prend en charge la MFA et les politiques d'authentification forte
- Compatibilité de niveau entreprise avec les systèmes RH et les applications internes
Explication des assertions SAML
Une Assertion SAML est un document XML émis par l'IdP contenant des données d'identité et d'autorisation. Il est signé numériquement et éventuellement crypté.
Éléments communs d'affirmation:
<Subject> – L’utilisateur en cours d’authentification
<AttributeStatement> – Informations sur l’utilisateur (par exemple, e-mail, rôle)
<Conditions> – Temps d’expiration, restrictions d’audience
<AuthnStatement> – Détails sur la connexion (par exemple, horodatage)
Exemple (simplifié) :
<saml:Assertion>
<saml:Subject>
<saml:NameID>jane@esadax.com</saml:NameID>
</saml:Subject>
<saml:AttributeStatement>
<saml:Attribute Name="email">
<saml:AttributeValue>jane@esadax.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="role">
<saml:AttributeValue>admin</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
Mise en œuvre de SAML SSO
-
Enregistrez votre application auprès du fournisseur d'identité (IdP).
-
Configurer l'échange de métadonnées:
- L'application fournit les métadonnées du fournisseur de services SAML (SP).
- IdP partage des métadonnées IdP (certificats, points de terminaison).
-
Configurer Assertion Consumer Service (ACS):
- Il s'agit du point de terminaison de votre application pour recevoir les réponses SAML.
-
Gérer la réponse SAML:
- Valider la signature et analyser les attributs.
- Créez une session basée sur des données d'assertion.
Considérations de sécurité
- ✅ Valider toujours la signature numérique de la réponse SAML
- Utiliser HTTPS pour empêcher l'interception des assertions
- Valider l'audience pour s'assurer que le jeton est pour votre application
- ⌛ Vérifier les délais d'expiration (
NotBefore, NotOnOrAfter)
- 🚫 Rejet des assertions non signées ou falsifiées
Troubleshooting
Glossaire
- SAML : Langage de balisage d'assertion de sécurité
- SSO : Authentification unique
- IdP : Fournisseur d'identité (authentifie l'utilisateur)
- SP: Fournisseur de services (votre application)
- ACS : Assertion Consumer Service – point de terminaison qui gère les réponses SAML
- Assertion : La charge utile d'identité émise par l'IdP
- Métadonnées : Fichier XML décrivant les capacités et les points d'extrémité du SP/IdP