← ClaudeAtlas

auditing-saml-and-oidc-flowslisted

Audit federated single sign-on for the flaws that let an attacker forge or replay an identity: signature wrapping and signature stripping on signed assertions, unsigned or unverified tokens accepted, redirect_uri and audience manipulation, missing state and nonce allowing replay and cross-site request forgery, and identity confusion where one provider's assertion is honored for another account. Use when reviewing a SAML or OIDC integration, an identity-provider connection, or any login that trusts an external assertion. The verification step is the target.
UnboundCompute/security-agent-skills · ★ 4 · AI & Automation · score 80
Install: claude install-skill UnboundCompute/security-agent-skills
# Auditing SAML and OIDC flows: the whole trust rests on one verification Federated login moves the trust boundary to a signed assertion from an identity provider, and the entire security rests on the relying party verifying that assertion exactly. The classic flaws are all failures of that verification: a signature checked over the wrong element, a token accepted without a signature, an audience or redirect target not pinned, a flow with no anti-replay value. Each lets an attacker present an identity that is not theirs. ## When to use - You are reviewing a SAML or OIDC integration or an identity-provider connection. - A login trusts an externally-issued, signed assertion or token. - You are assessing account-linking and how an external identity maps to a local one. ## Scope check Audit login flows you own or are authorized to test, with test accounts and a test identity provider. Do not forge assertions against systems you do not control. If you can't name the authorization, stop. ## The loop 1. **Identify the trusted assertion and where it is verified.** Find the token or assertion the relying party trusts (a signed SAML assertion, an OIDC id token) and the exact code that validates it. Everything downstream trusts whatever that check accepts, so the check is the audit target. 2. **Test signature presence and coverage.** Is every accepted assertion actually signed, and is the signature verified over the exact element whose contents are used? Try strip