SAML (Security Assertion Markup Language) est un standard OASIS d'échange d'assertions d'authentification et d'attributs au format XML. Dans sa version 2.0, il constitue l'un des socles historiques du SSO d'entreprise : un fournisseur d'identité (IdP) émet une assertion signée qu'un fournisseur de service (SP) vérifie avant d'ouvrir une session locale.
Le déroulé d'un flux
Le cas le plus répandu est initié par le service. L'utilisateur demande une application, celle-ci le redirige vers l'IdP avec une requête d'authentification. L'IdP l'authentifie, puis renvoie une assertion signée au fournisseur de service, généralement par une soumission de formulaire HTTP POST. L'assertion contient l'identité, une durée de validité, un destinataire attendu et souvent le contexte d'authentification employé.
La sécurité repose entièrement sur la vérification de la signature XML, du destinataire et des bornes temporelles. Les défauts d'implémentation sur ce point figurent parmi les vulnérabilités récurrentes du protocole.
SAML ou OpenID Connect
SAML repose sur XML et sur une spécification autonome ; OpenID Connect repose sur JSON et sur OAuth 2.0. SAML reste très présent dans les applications web d'entreprise et les portails institutionnels ; OIDC s'impose sur le mobile, les API et les applications monopages. Beaucoup d'organisations exploitent les deux, avec le même IdP.
Une remarque vaut pour l'un comme pour l'autre : la fédération n'améliore pas la force du facteur initial. Elle la diffuse à toutes les applications, dans le bon comme dans le mauvais sens.
Aller plus loin : définition d'OpenID Connect · SSO : fonctionnement, bénéfices et angle mort · définition de l'IdP · l'authentification cognitive