image de chargement
Retour au glossaire

SAML (Security Assertion Markup Language)

Standard XML pour l'authentification unique (SSO) permettant l'échange sécurisé d'informations d'identité entre fournisseurs d'identité et applications.

Mis à jour le 13 janvier 2026

SAML (Security Assertion Markup Language) est un standard ouvert basé sur XML qui permet l'authentification unique (SSO) et l'échange sécurisé d'informations d'identité entre un fournisseur d'identité (Identity Provider - IdP) et un fournisseur de services (Service Provider - SP). Développé par l'OASIS Security Services Technical Committee, SAML élimine le besoin de gérer plusieurs identifiants en permettant aux utilisateurs de s'authentifier une seule fois pour accéder à plusieurs applications. Ce protocole est particulièrement répandu dans les environnements d'entreprise et les solutions B2B nécessitant une gestion centralisée des identités.

Fondements de SAML

  • Assertions XML signées numériquement contenant des déclarations d'authentification, d'attribution et d'autorisation
  • Architecture à trois acteurs : l'utilisateur (principal), le fournisseur d'identité (IdP) et le fournisseur de services (SP)
  • Flux d'authentification initié par le SP (SP-initiated) ou par l'IdP (IdP-initiated) avec redirections HTTP
  • Protocoles de liaison (bindings) utilisant HTTP POST, HTTP Redirect ou SOAP pour le transport des messages

Avantages stratégiques

  • Expérience utilisateur améliorée : une seule authentification pour accéder à toutes les applications autorisées
  • Sécurité renforcée : centralisation de l'authentification, réduction des vecteurs d'attaque et support de MFA
  • Réduction des coûts IT : moins de demandes de réinitialisation de mots de passe et simplification de la gestion des accès
  • Conformité facilitée : traçabilité centralisée des accès et respect des politiques de sécurité d'entreprise
  • Interopérabilité : standard largement supporté par les solutions SaaS et les plateformes d'entreprise

Exemple de flux SAML

saml-assertion-example.xml
<?xml version="1.0" encoding="UTF-8"?>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
                ID="_8e8dc5f69a98cc4c1ff3427e5ce34606fd672f91e6"
                Version="2.0"
                IssueInstant="2024-01-15T09:30:47Z">
  <saml:Issuer>https://idp.example.com</saml:Issuer>
  <saml:Subject>
    <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
      user@company.com
    </saml:NameID>
    <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
      <saml:SubjectConfirmationData
          NotOnOrAfter="2024-01-15T09:35:47Z"
          Recipient="https://app.example.com/saml/acs"/>
    </saml:SubjectConfirmation>
  </saml:Subject>
  <saml:Conditions NotBefore="2024-01-15T09:30:17Z"
                   NotOnOrAfter="2024-01-15T09:35:47Z">
    <saml:AudienceRestriction>
      <saml:Audience>https://app.example.com</saml:Audience>
    </saml:AudienceRestriction>
  </saml:Conditions>
  <saml:AuthnStatement AuthnInstant="2024-01-15T09:30:47Z">
    <saml:AuthnContext>
      <saml:AuthnContextClassRef>
        urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
      </saml:AuthnContextClassRef>
    </saml:AuthnContext>
  </saml:AuthnStatement>
  <saml:AttributeStatement>
    <saml:Attribute Name="email">
      <saml:AttributeValue>user@company.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

  1. Sélectionner et configurer un fournisseur d'identité SAML (Okta, Azure AD, Auth0, Keycloak)
  2. Enregistrer l'application (SP) auprès de l'IdP avec les métadonnées SAML (ACS URL, Entity ID)
  3. Configurer les certificats X.509 pour la signature et le chiffrement des assertions SAML
  4. Implémenter l'endpoint ACS (Assertion Consumer Service) côté application pour traiter les réponses SAML
  5. Définir les mappings d'attributs entre l'IdP et l'application (email, rôles, groupes)
  6. Tester les flux SP-initiated et IdP-initiated avec des outils de validation SAML
  7. Configurer la gestion des sessions et la déconnexion unique (Single Logout - SLO)
  8. Mettre en place la surveillance et les logs d'audit des authentifications SAML

Conseil de sécurité

Toujours valider la signature des assertions SAML côté SP et implémenter des vérifications strictes sur les conditions temporelles (NotBefore, NotOnOrAfter) pour prévenir les attaques par rejeu. Utilisez SAML 2.0 exclusivement et activez le chiffrement des assertions pour les données sensibles. Configurez également des politiques de rotation des certificats pour maintenir la sécurité à long terme.

Outils et plateformes SAML

  • Fournisseurs d'identité : Okta, Microsoft Azure AD, Google Workspace, Auth0, OneLogin, Keycloak
  • Bibliothèques d'intégration : passport-saml (Node.js), python3-saml (Python), ruby-saml (Ruby), OneLogin SAML Toolkits
  • Outils de débogage : SAML-tracer (extension navigateur), SAMLTool.com, SAML Chrome Panel
  • Solutions open-source : SimpleSAMLphp, Shibboleth, WSO2 Identity Server

SAML reste le standard de référence pour l'authentification unique en entreprise, particulièrement pour l'intégration avec les systèmes legacy et les solutions SaaS B2B. Bien qu'OAuth 2.0 et OpenID Connect gagnent en popularité pour les architectures modernes et mobiles, SAML offre une maturité éprouvée, un support étendu et des fonctionnalités d'entreprise robustes. Pour les organisations cherchant à moderniser leur infrastructure d'identité tout en maintenant la compatibilité avec les applications existantes, une stratégie hybride combinant SAML pour les applications d'entreprise et OIDC pour les nouvelles applications cloud-native représente souvent la meilleure approche.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.