SAML

Auteur:Lars Nyström
Mise à jour:7 mai 2025

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

  1. Qu'est-ce que SAML?
  2. Comment SAML fonctionne
  3. SAML contre OIDC
  4. Avantages de SAML
  5. Explication des assertions SAML
  6. Mise en œuvre de SAML SSO
  7. Considérations de sécurité
  8. Troubleshooting
  9. 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

  1. L'utilisateur tente d'accéder à une ressource protégée (fournisseur de services).
  2. SP redirige l'utilisateur vers le fournisseur d'identité (IdP).
  3. L'utilisateur s'authentifie auprès de l'IdP (p. ex. avec des informations d'identification d'entreprise).
  4. IdP envoie une réponse SAML, contenant une assertion, au fournisseur de services.
  5. 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

  1. Enregistrez votre application auprès du fournisseur d'identité (IdP).

  2. 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).
  3. Configurer Assertion Consumer Service (ACS):

    • Il s'agit du point de terminaison de votre application pour recevoir les réponses SAML.
  4. 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

  • Signature non valide?

    • Vérifiez si vous utilisez le bon certificat IdP
  • Réponse SAML non analysée?

    • Assurer un encodage correct (Base64), et une structure XML valide
  • Public incorrect?

    • Assurez-vous que votre ID d’entité SP correspond à ce qui est configuré dans IdP
  • Utilisateur non trouvé?

    • Vérifiez si le mappage des attributs est correct (par exemple, email, nameID)

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