# SAML, sous le capot : la signature à l'intérieur de la lettre

Published: 2026-09-24

SAML vous connecte à presque toutes les applications de travail, et sa signature vit à l'intérieur du XML qu'elle signe. Sous le capot : la danse de connexion entre l'application, le navigateur et le fournisseur d'identité, à quoi ressemble une assertion, pourquoi la canonisation doit s'accorder sur chaque octet, et pourquoi la même classe de bugs revient sans cesse de 2012 à 2025. Inspiré par "SAML: A fractal of bad design" de Trail of Bits (312 points sur Hacker News).

Canonical: https://thedailydiff.dev/fr-CA/video/2026-09-24-saml-under-the-hood/

## Ce que cette vidéo couvre

- SAML : la connexion qui se signe elle-même de l'intérieur
- 2002 : quatre formats XML, un comité, toute une industrie
- La danse de connexion : application → fournisseur d'identité → retour via votre navigateur
- L'assertion : la signature vit à l'intérieur de ce qu'elle signe
- Canonicalisation : s'accorder sur chaque octet, sinon personne ne se connecte

## Chapitres

- 0:00 SAML : la connexion qui se signe elle-même de l'intérieur
- 0:34 2002 : quatre formats XML, un comité, toute une industrie
- 0:46 La danse de connexion : application → fournisseur d'identité → retour via votre navigateur
- 0:59 L'assertion : la signature vit à l'intérieur de ce qu'elle signe
- 1:10 Canonicalisation : s'accorder sur chaque octet, sinon personne ne se connecte
- 1:32 2012 : le vérificateur et le lecteur regardent des éléments différents
- 1:51 2018 et 2025 : deux analyseurs syntaxiques, deux réponses différentes
- 2:08 Pourquoi ça continue de briser : une fractale de mauvaise conception
- 2:27 Lundi : OIDC d'abord, une bibliothèque maintenue, des formes strictes
- 2:43 Verdict, sous le capot : REVERT

## Transcription traduite

Traduit de la narration originale en anglais. L'audio et les sous-titres disponibles sont contrôlés par YouTube.

### SAML : la connexion qui se signe elle-même de l'intérieur

0:00 SAML est le XML qui vous connecte à presque toutes les applications de travail que vous possédez, et sa signature vit à l'intérieur du document qu'elle signe, comme un notaire agrafant son timbre à l'intérieur de l'enveloppe qu'il scelle. Dix ans après qu'un comité l'ait écrit, des chercheurs ont testé quatorze frameworks SAML. Onze ont échoué. Et cette semaine, un article de Trail of Bits le qualifiant de fractale de mauvaise conception a atteint la page d'accueil de Hacker News. En trois minutes : comment fonctionne la danse de connexion, où se cache la signature,

0:27 et pourquoi la solution sur laquelle tout le monde est d'accord est un protocole différent. Ceci est The Daily Diff, sous le capot.

### 2002 : quatre formats XML, un comité, toute une industrie

0:34 Deux mille deux. Un comité de sécurité chez Oasis fusionne quatre formats XML de fournisseurs en un seul. Les universités l'adoptent en premier, puis Okta bâtit une entreprise dessus, la façon la plus rapide qu'un document de comité n'ait jamais généré des revenus. Vous ouvrez l'application.

### La danse de connexion : application → fournisseur d'identité → retour via votre navigateur

0:46 Elle n'a aucune idée de qui vous êtes, alors elle renvoie votre navigateur vers le fournisseur d'identité, disons l'Okta de votre entreprise. Vous vous y connectez. Okta remet à votre navigateur un document XML signé qui indique qui vous êtes, et le navigateur le renvoie.

### L'assertion : la signature vit à l'intérieur de ce qu'elle signe

0:59 Ce document est l'assertion. Il nomme l'utilisateur, et la signature se trouve à l'intérieur, pointant vers l'assertion par son ID. Et le tout passe par votre navigateur, c'est-à-dire, par l'utilisateur. Pour le vérifier, l'application

### Canonicalisation : s'accorder sur chaque octet, sinon personne ne se connecte

1:11 reconstruit les octets exacts qui ont été signés. Elle retire la signature, normalise les espaces et l'ordre des attributs, et hache le résultat. C'est la canonisation, et si les deux parties ne sont pas d'accord sur un seul octet, personne ne se connecte. Un jeton web JSON le fait différemment. L'en-tête, la charge utile et la signature sont côte à côte avec des points entre les deux. Rien à découper d'abord.

### 2012 : le vérificateur et le lecteur regardent des éléments différents

1:32 Voici la faille. Le code qui vérifie la signature et le code qui lit le nom d'utilisateur sont souvent deux pièces différentes. En deux mille douze, un article intitulé On Breaking Saml a montré que vous pouviez déplacer l'assertion signée là où le lecteur l'ignore, et en placer une seconde là où il regarde. Salesforce et Shibboleth faisaient partie des onze qui sont tombés dans le piège. En deux mille dix-huit, Duo a montré qu'un commentaire à l'intérieur d'un nom d'utilisateur pouvait faire en sorte que certaines

### 2018 et 2025 : deux analyseurs syntaxiques, deux réponses différentes

1:55 bibliothèques ne lisent que la moitié du nom, tandis que la signature était toujours valide. En deux mille vingt-cinq, GitHub a trouvé deux analyseurs XML à l'intérieur de ruby Saml qui étaient en désaccord sur le même document. Même bug, nouvelle décennie. Trail of Bits l'appelle une fractale, car chaque niveau dans lequel vous zoomez présente le

### Pourquoi ça continue de briser : une fractale de mauvaise conception

2:12 même défaut. Il est basé sur XML, la signature est enveloppée, et les connexions réelles utilisent peut-être un dixième de la spécification. Et la meilleure réponse sur Hacker News vient de l'acheteur. Si vous n'avez pas de support SAML, je peux trouver un produit qui en a. Les deux sont vrais, ce qui est le problème. Donc, lundi. SHIP IT : OpenID Connect d'abord, Fly et Tailscale vendent aux entreprises

### Lundi : OIDC d'abord, une bibliothèque maintenue, des formes strictes

2:31 sans SAML du tout. Si un client l'exige, utilisez une bibliothèque maintenue, gardez-la à jour, et rejetez les messages qui ne ressemblent pas à ceux qu'Okta ou Google envoient. Ne jamais écrire sa propre vérification de signature.

### Verdict, sous le capot : REVERT

2:43 Verdict, sous le capot. REVERT. Presque vingt-cinq ans, une classe de bugs qui ne meurt jamais, et la solution sur laquelle tout le monde est d'accord est un protocole différent. Samedi dernier, j'ai démonté les clés d'accès, alors dites-moi ce que je devrais ouvrir ensuite dans les commentaires. Et c'est la différence pour aujourd'hui. Je suis Niko d'Axrisi. Fusionnez de manière responsable.

## Sources

- [Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)](https://blog.trailofbits.com/2026/09/21/saml-a-fractal-of-bad-design/) — blog.trailofbits.com
- [Hacker News thread](https://news.ycombinator.com/item?id=49806335) — news.ycombinator.com
- [Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012](https://www.usenix.org/conference/usenixsecurity12/technical-sessions/presentation/somorovsky) — www.usenix.org
- [Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445](https://www.kb.cert.org/vuls/id/475445) — www.kb.cert.org
- [GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)](https://github.blog/security/sign-in-as-anyone-bypassing-saml-sso-authentication-with-parser-differentials/) — github.blog
