AuthN = who are you | AuthZ = what are you allowed to do
Most protocols do one. A few do both. None of them are interchangeable.
Verifies identity under a defined trust policy. It can produce a credential or authenticated session, but downstream systems must still validate that evidence for their own audience and context. Authentication alone does not decide what the caller may do.
Controls access. Given a verified identity or client context, determines what resources and operations are permitted. OAuth 2.0 defines delegated authorization; it does not make an access token proof of end-user identity.
Most systems combine both decisions. OpenID Connect adds standardized end-user authentication to OAuth 2.0. SAML assertions can carry authentication and attribute statements, while the relying application still owns its authorization policy.
A valid access token, audience, and OAuth scope do not authorize a specific object, property, tenant, or business action. Every resource API must enforce those decisions against the verified principal and current resource. See the Resource and Business Authorization section.
OAuth 2.0 grants permissions, not identity. If your system needs to know "who is this user," layer OpenID Connect on top. Using OAuth alone and treating the access token as identity proof is a common and dangerous mistake.
iss, sub, aud, exp, and iat. Other identity or session claims are optional or request-dependent.Use OIDC when a client needs standardized end-user authentication. Use the OAuth access token, not the ID token, at resource APIs, and apply resource authorization separately from the login decision.
SAML is mature and widely supported for enterprise browser SSO. Existing non-browser profiles should be assessed as legacy interoperability requirements; new programmatic or agentic API access should normally use an OAuth-based design.
private_key_jwt (RFC 7523) or tls_client_auth (RFC 8705) when the authorization server and deployment support it.Client Credentials is the OAuth grant for a client acting on its own behalf. No user or browser is involved. Use a strong client-authentication method, narrowly scoped access, an explicit audience, and a token-lifecycle policy appropriate to the service.
mTLS provides high-assurance mutual authentication when certificate issuance, private-key protection, identity mapping, rotation, and revocation are operated correctly. Certificate-bound access tokens add proof of possession, but resource authorization remains a separate decision.
DPoP is an application-layer sender-constraining option when certificate-bound tokens are unsuitable. Validate proof method, URI, key binding, time, nonce where used, and replay identifiers according to RFC 9449.
FAPI 2.0 is a strong option when an ecosystem needs its defined high-security OAuth attacker model and interoperability profile. It is not automatically required by a data classification. Adoption requires compatible authorization servers, clients, resource servers, and operational key management.
resource parameter. Servers must accept only tokens intended for their canonical resource URI.The MCP HTTP profile is an OAuth resource-server boundary, not merely transport authentication. Pin the specification revision, validate the canonical resource audience, minimize scopes, and exchange rather than forward tokens. Source: MCP Authorization 2025-11-25.
response_type=token, treat it as migration work and replace it with authorization code plus PKCE.Do not select the implicit grant for a new integration. RFC 9700 says clients should not use it because access tokens in authorization responses are vulnerable to leakage and replay. Use authorization code with PKCE unless a current, reviewed specification defines another flow.
| Protocol | AuthN | AuthZ | User Present | Non-user M2M | Token Binding | Browser Required | Use In AI Systems |
|---|---|---|---|---|---|---|---|
| OAuth 2.0 + PKCE | ✗ | ✓ | ✓ | ✗ | Optional mTLS / DPoP | ✓ | User-facing AI apps |
| OpenID Connect 1.0 | ✓ | Via OAuth access token | ✓ | ✗ | Access-token dependent | ✓ | Identity-aware AI, audit, RBAC |
| SAML 2.0 | ✓ | Attribute input only | ✓ | ✗ | None | ✓ Required | Enterprise browser SSO focus |
| OAuth 2.0 Client Creds | Client authentication | ✓ | ✗ | ✓ | Optional mTLS / DPoP | ✗ | Agent-to-service, pipelines |
| mTLS | ✓ Strong | Policy-dependent | Optional | ✓ | With RFC 8705 | ✗ | Workload identity, high-security M2M |
| DPoP | ✗ | Token-dependent | Optional | ✓ | Key-bound | ✗ | Multi-hop agent pipelines |
| FAPI 2.0 | ✓ | ✓ | Optional | ✓ | mTLS or DPoP | Optional | High-value APIs matching the FAPI attacker model |
| MCP HTTP Authorization | Authorization-server dependent | ✓ | Depends on grant | Extension-dependent | Optional extension | For user authorization flow | Remote MCP servers and agent tools |
| OAuth 2.0 Implicit | ✗ | Legacy grant | ✓ | ✗ | None | ✓ | Do not use |