The flow (Web Browser SSO Profile)
The most-used SAML 2.0 profile. Two variants: IdP-Initiated and SP-Initiated. SP-Initiated is the security default — the SP knows it asked.
1. User visits SP (e.g. https://app.example.com)
2. SP redirects user to IdP with an AuthnRequest:
https://idp.example.com/sso?SAMLRequest=<base64-deflated>&RelayState=<csrf>
3. User authenticates at IdP (MFA, password, certificate, ...)
4. IdP POSTs a signed SAML Response back to the SP's ACS URL:
POST https://app.example.com/saml/acs
SAMLResponse=<base64-encoded>&RelayState=<csrf>
5. SP validates:
- Signature on the Response (or on the inner Assertion)
- NotBefore / NotOnOrAfter (clock skew tolerated)
- Audience restriction matches the SP's entity ID
- Issuer matches the trusted IdP
6. SP creates a local session and redirects to the requested resource