SAML Inspector
Decode a SAMLResponse or AuthnRequest and see who it logs in, for which service and until when — with checks for unsigned assertions, signature wrapping and comment tricks.
How to use
- Paste the SAMLResponse (Base64), a SAML URL, or the XML — from your browser’s network tab or a SAML tracer.
- Read the user, audience, time window and the findings.
- Enter your SP’s entity ID and ACS URL for a clear accept / reject.
The SAML login in four messages
The service provider (SP) sends the browser to the identity provider with an AuthnRequest, usually in the Redirect binding: deflated, Base64-encoded and URL-encoded in the SAMLRequest parameter. After sign-in the IdP posts a SAMLResponse back to the SP’s Assertion Consumer Service (ACS) URL, Base64-encoded in a form field. Paste either message, or the whole URL, and it is decoded the same way.
Before creating a session, the SP must check the signature, the issuer, that the audience is its own entity ID, that the recipient is its ACS URL, the time window, and that InResponseTo matches a request it actually sent. “Check it like your SP” does exactly these checks.
Attacks the findings look for
XML signature wrapping moves the signed element and slips an unsigned assertion where the SP will read it, so the signature is valid but covers the wrong data. Comment truncation hides part of a NameID inside an XML comment so some parsers read a different user (the 2018 Duo disclosure, CVE-2017-11427 and related). Unsigned assertions inside a signed response, duplicate IDs and SHA-1 signatures are flagged as well.
When a working login suddenly fails
Look first at the time window (clock skew between servers), then at the audience and recipient after a URL change, and then at the signing certificate: IdPs roll their certificates, and an SP still holding the old one rejects every response. The signing certificate’s fingerprint and expiry are shown so you can compare them with your SP configuration.
Common questions
How do I get the SAMLResponse to decode?
In your browser’s developer tools, open the Network tab, sign in, and find the POST to your application’s ACS URL: the SAMLResponse form field is the value to paste. A SAML tracer extension shows it too.
Why does my SAML login fail?
The most common causes are an audience that doesn’t match the SP entity ID, a wrong ACS (Recipient) URL, clock skew between servers, and a changed IdP signing certificate. “Check it like your SP” tests each of these.
Does this verify the SAML signature?
It finds the signatures and checks them for the structural attacks behind real breaches (signature wrapping, unsigned assertions, comment truncation). Verifying the cryptography needs the IdP certificate in your SP.
Known limitations
- Signatures are checked for structural attacks, not verified cryptographically.
- Encrypted assertions can’t be read (they need the SP’s private key).
- SAML 2.0 only; messages with a DOCTYPE are refused.
- Browser extensions can read any page — use a private window for sensitive data. How the lock works
Related reading on CipherMind
Standards & references
- OASIS SAML 2.0 Core (opens in a new tab)
- OASIS SAML 2.0 Bindings (POST, Redirect) (opens in a new tab)
- OASIS SAML 2.0 Profiles (Web SSO) (opens in a new tab)
- OWASP SAML Security Cheat Sheet (opens in a new tab)
- W3C XML Signature (opens in a new tab)
- CVE-2017-11427 — comment truncation (opens in a new tab)