Skip to content

Enable non-breaking extensibility #227

@selfissued

Description

@selfissued

The OAuth and OpenID Connect specifications use a standard pattern to enable extensibility in a way that the use of extensions does not break existing deployments. That pattern is:

  • Where a set of values is defined, specify that additional values MAY be defined and used.
  • Where a set of values is used, specify that values that are not understood MUST be ignored.

Language incorporating this pattern is currently missing from the specification. We should add it where metadata parameters are defined and also for other parameter sets. Otherwise, we'll be building a brittle specification whose deployments will break by rejecting unexpected values when they are added as their ecosystems evolve.

Examples of this pattern are:

  • Connect Core: "ID Tokens MAY contain other Claims. Any Claims used that are not understood MUST be ignored.", "Other parameters MAY be sent, if defined by extensions. Any parameters used that are not understood MUST be ignored by the Client."
  • Connect Discovery: "Additional OpenID Provider Metadata parameters MAY also be used. Some are defined by other specifications, such as OpenID Connect Session Management 1.0 [OpenID.Session]."
  • Connect Registration: "Additional Client Metadata parameters MAY also be used. Some are defined by other specifications, such as OpenID Connect RP-Initiated Logout 1.0 [OpenID.RPInitiated].", "An Authorization Server MAY ignore values provided by the client and MUST ignore any fields sent by the Client that it does not understand."
  • OAuth 2.0: "New request or response parameters for use with the authorization endpoint or the token endpoint are defined and registered in the OAuth Parameters registry", "The authorization server MUST ignore unrecognized request parameters.", "The client MUST ignore unrecognized response parameters.", "The client MUST ignore unrecognized value names in the response."
  • OAuth DCR: "Extensions and profiles of this specification can expand this list with metadata names and descriptions registered in accordance with the IANA Considerations", "The authorization server MUST ignore any client metadata sent by the client that it does not understand", "Other members MAY also be included and, if they are not understood, they MUST be ignored".
  • OAuth AS Metadata: "Additional authorization server metadata parameters MAY also be used. Some are defined by other specifications, such as OpenID Connect Discovery 1.0 [OpenID.Discovery].".
  • JWT: "all claims that are not understood by implementations MUST be ignored".

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions