OAuth 2.1 and its profiles
| Field | Value |
|---|---|
| Status | Adopt as the authorisation primitives of A6, B1, B3 and B4 |
| Version pinned | draft-ietf-oauth-v2-1-16 (3 September 2026) with RFC 6749, 6750, 7009, 7523, 7591, 7636, 7662, 8252, 8414, 8693, 8707, 9068, 9101, 9126, 9207, 9396, 9449, 9700 and 9728, OpenID Connect Core 1.0 section 9 and draft-ietf-oauth-client-id-metadata-document-02 |
| Source | https://datatracker.ietf.org/doc/draft-ietf-oauth-v2-1/16/ |
| What is taken | Client registration and lifecycle, PKCE flows, pushed authorisation requests, resource indicators, sender-constrained tokens, structured authorisation details, protected-resource and server metadata, issuer identification, revocation, token exchange and JWT access tokens |
| Why | Mature, library-supported primitives that recipients already speak |
| What is extended or replaced | Profiles the authorization_details type for domain and level, the contribution request and the grant-offer exchange; makes PKCE S256 and DPoP mandatory for every client and every access token; nothing replaced |
| Specification home | A6, B1 |
Version pinned
| Standard | Version | Status |
|---|---|---|
| OAuth 2.1 | draft-ietf-oauth-v2-1-16, 3 September 2026 | Internet-Draft, IETF OAuth working group; not an RFC |
| OAuth 2.0 | RFC 6749, October 2012 | Proposed Standard, updated by RFC 8252, 8996 and 9700 |
| Bearer token usage | RFC 6750, October 2012 | Proposed Standard |
| PKCE | RFC 7636, September 2015 | Proposed Standard |
| Rich Authorization Requests | RFC 9396, May 2023 | Proposed Standard |
| DPoP | RFC 9449, September 2023 | Proposed Standard |
| Protected Resource Metadata | RFC 9728, April 2025 | Proposed Standard |
| Authorization Server Metadata | RFC 8414, June 2018 | Proposed Standard |
| Dynamic Client Registration | RFC 7591, July 2015 | Proposed Standard |
| JWT client authentication | RFC 7523, May 2015 | Proposed Standard |
private_key_jwt |
OpenID Connect Core 1.0 incorporating errata set 2, 15 December 2023, section 9 | OpenID Foundation Final Specification |
| Issuer identification | RFC 9207, March 2022 | Proposed Standard |
| Resource indicators | RFC 8707, February 2020 | Proposed Standard |
| Pushed authorisation requests | RFC 9126, September 2021 | Proposed Standard |
| JWT-secured authorisation requests | RFC 9101, August 2021 | Proposed Standard |
| Token revocation | RFC 7009, August 2013 | Proposed Standard |
| Token introspection | RFC 7662, October 2015 | Proposed Standard |
| Token exchange | RFC 8693, January 2020 | Proposed Standard |
| JWT access tokens | RFC 9068, October 2021 | Proposed Standard |
| Native apps | RFC 8252, October 2017 | Best Current Practice |
| OAuth 2.0 security best current practice | RFC 9700, January 2025 | Best Current Practice (BCP 240) |
| Client ID Metadata Document | draft-ietf-oauth-client-id-metadata-document-02, 6 July 2026 | Internet-Draft, IETF OAuth working group; not an RFC |
Versions and statuses were read from the RFC Editor's metadata and the IETF datatracker on 4 October 2026; the texts of RFC 7523, RFC 9700, OpenID Connect Core 1.0 and both Internet-Drafts, with the earlier revisions the MCP record compares, were read from those sources on 8 October 2026. The two Internet-Drafts are moving targets; a later revision is taken only through a change entry.
What is taken
- Authorisation code with PKCE S256 only, exact redirect matching with the RFC 8252 loopback exception, single-use codes and rotating refresh tokens, with a reused code or refresh token ending the grant, as RFC 9700 sections 4.2.4 and 4.14 recommend (A6.3).
- RFC 9728 protected-resource metadata, one path-specific document for each protected resource, RFC 8414 server metadata with RFC 9728's
protected_resources, and the RFC 9207issparameter (A6.1). - Client ID Metadata Documents as the primary registration for unknown clients, static registration for first-party clients and RFC 7591 for any client, with client metadata limited to the members A6.1 lists (A6.1).
private_key_jwtclient authentication, which OpenID Connect Core 1.0 section 9 defines on RFC 7523 section 2.2, with the client's inline ES256 keys (A6.1).- RFC 8707
resourceto name the one audience of a grant, and RFC 9126 pushed authorisation requests, with RFC 9101'sinvalid_request_urifor a pushed request that cannot be used (A6.2, A6.3, B1.9). - RFC 9396
authorization_detailsas the envelope for structured requests, which is also PDPP Core v0.1.0's envelope (see the PDPP record, pinned at commit8f79a48), and for the contribution request (A6.2). - RFC 9449 DPoP for every access token, RFC 9068 for access token claims, RFC 7009 for refresh-token revocation and RFC 8693 token exchange for delegated grant offers (A6.3 to A6.5).
- RFC 6750's
invalid_tokenerror code for a refused token, not its Bearer scheme (A6.3). - RFC 7662's response shape for the introspection result a provider projects for the PDPP binding (B1.6); no public introspection endpoint is required.
- The error codes these documents define, kept in their own error form on OAuth endpoints and listed in the error registry.
Why
These are the primitives recipients and assistants already implement, with maintained libraries, so Open Personal Context profiles them rather than defining its own authorisation protocol.
What is extended
- The
authorization_detailscontent is profiled for domains and disclosure levels through the PDPP binding (B1), and for contribution grants by the typeurn:autonym:authorization-details:contribute(A6.2). - RFC 7591 client metadata gains
autonym_purge_uri, where purge instructions are delivered (A6.1). - The access token gains
autonym_grant_idandautonym_purpose(A6.3). - The grant-offer exchange in A6.4 uses RFC 8693 with an Open Personal Context token type,
urn:autonym:params:oauth:token-type:grant-offer. A6.4 states that this is an Open Personal Context choice, not something RFC 8693 defines. - The client lifecycle token in A6.6 is an Open Personal Context profile of the client credentials grant.
- A grant offer's recipient is a confidential client that authenticates with
private_key_jwt, so holding an offer is never enough to redeem it (A6.1, A6.4). - RFC 7009 asks a public client for no credential at the revocation endpoint. A public client's refresh token is bound to its DPoP key (RFC 9449 section 5), so its revocation also carries a DPoP proof by that key, and a refresh token bound to another key is not revoked (A6.5).
What is replaced or not used
- The implicit grant and the resource owner password grant are not used; OAuth 2.1 removes them.
- PKCE
plainis rejected (A6.3). - Bearer tokens are neither issued nor accepted for any client: every access token is DPoP-bound (A6.3).
- Client secrets,
client_secret_basic,client_secret_postandclient_secret_jwtare not used; a confidential client authenticates withprivate_key_jwt(A6.1). jwks_uri,sector_identifier_uriand software statements are not accepted in client metadata (A6.1).- OpenID Connect's
application_typeclient metadata member is not accepted: whether the RFC 8252 loopback-port exception applies is decided from the client's redirect URIs, and only a client whose redirect URIs are allhttploopback URIs uses it (A6.1, A6.3). - A public RFC 7662 introspection endpoint is not required: a provider's resource servers introspect locally (B1.6).
- OpenID Connect sign-in is not used: no ID token,
openidscope or userinfo endpoint. A provider's authorisation-server metadata may still carry OpenID Connect'ssubject_types_supported; it describes the provider's own internal subject identifier, never the pairwise handle every access token carries assub(A3.2, A6.3).
Deviations
- OAuth 2.1 is still an Internet-Draft. Open Personal Context cites revision 16 and the RFCs it consolidates, and does not claim conformance to an unpublished RFC.
- RFC 9068 section 2.1 requires an authorisation server to support RS256 for access tokens. Open Personal Context signs and accepts access tokens with ES256 only (A6.3), as the JOSE record does for signed objects; no client has to verify one.
- RFC 7591 section 2 has an authorisation server ignore client metadata it does not understand. Open Personal Context refuses a registration or a metadata document with any member A6.1 does not list, so a client is never registered with part of what it asked for silently dropped. It also refuses a software statement, which RFC 7591 lets a server ignore, because a provider trusts no statement issuer.
- RFC 7591 section 2 defaults
token_endpoint_auth_methodtoclient_secret_basic. Open Personal Context accepts no client secret, so registration metadata always states the method. - Mandatory DPoP departs from the Bearer usage MCP specifies for its clients; see the MCP record.
Conformance checks
CORE-01, CONSENT-01, OAUTH-01, FETCH-01, DELEGATE-01, TRANSPORT-01 and the SCOPE family in the conformance manifest, with runtime evidence pending.
References to other standards and projects describe intended technical alignment only and do not imply endorsement or partnership.