REFERENCE GUIDE

OAuth redirect binding, state, and authorization-code handling

OAuth delegates access through a client, authorization server, resource server, and user.

Also known as: OAuth2 · PKCE

oauth-flowsweb

Mechanism

OAuth delegates access through a client, authorization server, resource server, and user. The authorization code must be bound to the intended client and redirect context, while state and PKCE protect different parts of the flow. OAuth alone does not define user authentication; OpenID Connect adds identity semantics and token validation requirements.

Practical method

Draw the exact flow and identify redirect URI, state, code, code verifier, and token endpoint. Check exact redirect matching and whether code redemption requires the expected client and PKCE verifier. Test session binding with two lab browser sessions rather than treating every token as interchangeable.

authorize(client, redirect, state, challenge) -> code
redeem(code, client, redirect, verifier) -> access token

Interpreting evidence

A useful finding identifies the binding that is absent and the unintended session or recipient that benefits. A leaked code may be unusable if redemption still requires a verifier or confidential-client authentication.

Pitfalls and limits

Open redirects can matter when allowed redirect rules incorporate them. State is not a substitute for PKCE. Identity tokens and access tokens have different audiences and purposes.

Sources & further reading

  1. OAuth security best practice — RFC 9700 ↗rfc
  2. OAuth authentication ↗portswigger

Content license: CC-BY-4.0. Source-derived sections retain their cited licenses and redistribution notices. How this reference is compiled →