Un fournisseur d’identité émet une Assertion (sujet, conditions telles que NotBefore, NotOnOrAfter et AudienceRestriction, déclaration d’authentification et attributs), la signe avec XML Signature et la transmet dans une Response via le navigateur, généralement avec la liaison (binding) HTTP-POST. Le fournisseur de services vérifie la signature à l’aide du certificat de l’IdP issu des métadonnées, ainsi que l’audience, la fenêtre temporelle, la valeur InResponseTo et l’URL de destination.
La plupart des bugs SAML graves sont des bugs de traitement XML : l’encapsulation de signature, ou signature wrapping (le vérificateur contrôle un élément signé tandis que l’application en lit un autre, non signé), la troncature par commentaire dans les identifiants de nom (2018, plusieurs bibliothèques), l’expansion d’entités externes XML et les signatures qui ne couvrent qu’une partie d’une réponse. Utilisez une bibliothèque maintenue et ne vérifiez jamais les signatures avec du code XPath générique.
Pour les nouvelles applications, OpenID Connect est généralement plus simple, mais les entreprises clientes exigent souvent SAML ; de nombreux produits prennent en charge les deux. L’inspecteur SAML décode et vérifie les assertions localement.