# SAML, pod kapotou: podpis uvnitř dopisu

Published: 2026-09-24

SAML vás přihlašuje téměř do každé pracovní aplikace a jeho podpis žije uvnitř XML, které podepisuje. Pod kapotou: přihlašovací tanec mezi aplikací, prohlížečem a poskytovatelem identity, jak vypadá tvrzení, proč se kanonizace musí shodnout na každém bajtu a proč se stejná třída chyb neustále vrací od roku 2012 do roku 2025. Podníceno článkem "SAML: A fractal of bad design" od Trail of Bits (312 bodů na Hacker News).

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

## Co toto video pokrývá

- SAML: přihlášení, které se podepisuje zevnitř
- 2002: čtyři formáty XML, jeden výbor, celé odvětví
- Přihlašovací tanec: aplikace → poskytovatel identity → zpět přes váš prohlížeč
- Tvrzení: podpis žije uvnitř toho, co podepisuje
- Kanonizace: shoda na každém bajtu, jinak se nikdo nepřihlásí

## Kapitoly

- 0:00 SAML: přihlášení, které se podepisuje zevnitř
- 0:34 2002: čtyři formáty XML, jeden výbor, celé odvětví
- 0:46 Přihlašovací tanec: aplikace → poskytovatel identity → zpět přes váš prohlížeč
- 0:59 Tvrzení: podpis žije uvnitř toho, co podepisuje
- 1:10 Kanonizace: shoda na každém bajtu, jinak se nikdo nepřihlásí
- 1:32 2012: kontrolor a čtenář se dívají na různé elementy
- 1:51 2018 a 2025: dva parsery, dvě různé odpovědi
- 2:08 Proč se to neustále kazí: fraktál špatného designu
- 2:27 Pondělí: nejprve OIDC, udržovaná knihovna, přísné tvary
- 2:43 Verdikt, pod kapotou: REVERT

## Přeložený přepis

Přeloženo z původního anglického vyprávění. Dostupné audio a titulky jsou řízeny YouTube.

### SAML: přihlášení, které se podepisuje zevnitř

0:00 SAML je XML, které vás přihlašuje téměř do každé pracovní aplikace, kterou vlastníte, a jeho podpis žije uvnitř dokumentu, který podepisuje, jako by notář připevnil své razítko dovnitř obálky, kterou pečetí. Deset let poté, co ho výbor napsal, výzkumníci testovali čtrnáct SAML frameworků. Jedenáct selhalo. A tento týden se na titulní stránce Hacker News objevil příspěvek Trail of Bits, který ho nazývá fraktálem špatného designu. na titulní straně Hacker News. Za tři minuty: jak funguje přihlašovací tanec, kde se skrývá podpis,

0:27 a proč je oprava, na které se všichni shodují, jiný protokol. Toto je The Daily Diff, pod kapotou.

### 2002: čtyři formáty XML, jeden výbor, celé odvětví

0:34 Dva tisíce dva. Bezpečnostní výbor v Oasis slučuje čtyři formáty XML dodavatelů do jednoho. Nejprve ho adoptují univerzity, pak na něm Okta postaví společnost, nejrychleji, jak se kdy dokument výboru proměnil v příjem. Otevřete aplikaci.

### Přihlašovací tanec: aplikace → poskytovatel identity → zpět přes váš prohlížeč

0:46 Nemá ponětí, kdo jste, takže váš prohlížeč přesměruje na poskytovatele identity, řekněme Okta vaší společnosti. Přihlásíte se tam. Okta předá vašemu prohlížeči podepsaný dokument XML, který říká, kdo jste, a prohlížeč ho odešle zpět.

### Tvrzení: podpis žije uvnitř toho, co podepisuje

0:59 Tento dokument je tvrzení (assertion). Uvádí jméno uživatele a podpis se nachází uvnitř, ukazující zpět na tvrzení podle jeho ID. A celá věc prochází vaším prohlížečem, což znamená, přes uživatele. Pro kontrolu aplikace

### Kanonizace: shoda na každém bajtu, jinak se nikdo nepřihlásí

1:11 znovu sestaví přesné bajty, které byly podepsány. Vystřihne podpis, normalizuje mezery a pořadí atributů, a zahashuje výsledek. To je kanonizace, a pokud se obě strany neshodnou o jediný bajt, nikdo se nepřihlásí. JSON web token to dělá jinak. Hlavička, payload a podpis sedí vedle sebe s tečkami mezi nimi. Nic se nejprve nevystřihuje.

### 2012: kontrolor a čtenář se dívají na různé elementy

1:32 Tady je ta trhlina. Kód, který kontroluje podpis, a kód, který čte uživatelské jméno, jsou často dva různé kusy. V roce 2012 článek nazvaný On Breaking SAML ukázal, že podepsané tvrzení můžete přesunout tam, kde ho čtenář ignoruje, a dát druhé tam, kde ho hledá. kde ho hledá. Salesforce a Shibboleth patřily mezi jedenáct, které na to naletěly. hledá. Salesforce a Shibboleth patřily mezi jedenáct, které na to naletěly. V roce 2018 Duo ukázalo, že komentář uvnitř uživatelského jména by mohl způsobit, že některé

### 2018 a 2025: dva parsery, dvě různé odpovědi

1:55 knihovny přečtou pouze polovinu jména, zatímco podpis byl stále platný. V roce 2025 GitHub objevil dva XML parsery uvnitř ruby SAML neshodující se na stejném dokumentu. Stejná chyba, nové desetiletí. Trail of Bits to nazývá fraktálem, protože každá úroveň, do které se přiblížíte, má

### Proč se to neustále kazí: fraktál špatného designu

2:12 stejnou vadu. Je postaveno na XML, podpis je obálkovaný, a skutečná přihlášení používají možná desetinu specifikace. A nejlepší odpověď na Hacker News pochází od kupujícího. Pokud nemáte podporu SAML, mohu najít produkt, který ji má. Obě tvrzení jsou pravdivá, což je problém. Takže pondělí. Nejprve SHIP IT OpenID Connect, Fly a Tailscale prodávají

### Pondělí: nejprve OIDC, udržovaná knihovna, přísné tvary

2:31 podnikům bez SAML vůbec. Pokud si to zákazník vynutí, použijte udržovanou knihovnu, udržujte ji záplatovanou, a odmítejte zprávy, které nevypadají jako ty, které posílají Okta nebo Google. Nikdy si nepište vlastní kontrolu podpisu.

### Verdikt, pod kapotou: REVERT

2:43 Verdikt, pod kapotou. REVERT. Téměř dvacet pět let, jedna třída chyb, která nikdy neumírá, a oprava, na které se všichni shodují, je jiný protokol. Minulou sobotu jsem rozebíral passkeys, takže mi řekněte, co mám otevřít příště v komentářích. A to je The Daily Diff pro dnešek. Jsem Niko z Axrisi. Sloučit zodpovědně.

## Zdroje

- [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
