Skip to content

Implement OpenID Connect 1.0 Client Registration Endpoint #57

@jgrandja

Description

@jgrandja

This issue will deliver the Client Registration Endpoint, which is defined in OpenID Connect Dynamic Client Registration 1.0.

NOTE: This issue should NOT implement the Client Configuration Endpoint - it MAY be implemented in a separate PR at a later point.

The Client Registration Endpoint should follow a similar implementation pattern as the Provider Configuration Endpoint gh-55.

At a minimum, the following artifacts should be produced:

  • OidcClientRegistrationEndpointFilter (reference OidcProviderConfigurationEndpointFilter)
  • OidcClientRegistration (reference OidcProviderConfiguration)
  • OidcClientMetadataClaimAccessor (reference OidcProviderMetadataClaimAccessor)
  • OidcClientMetadataClaimNames (reference OidcProviderMetadataClaimNames)
  • OidcClientRegistrationHttpMessageConverter (reference OidcProviderConfigurationHttpMessageConverter)

The OidcClientMetadataClaimAccessor should only implement the REQUIRED claims and may implement the OPTIONAL claims if it's applicable to a feature that is currently implemented.

Take note of Section 3. Client Registration Endpoint:

The Client Registration Endpoint is an OAuth 2.0 Protected Resource through which a new Client registration can be requested. The OpenID Provider MAY require an Initial Access Token that is provisioned out-of-band (in a manner that is out of scope for this specification) to restrict registration requests to only authorized Clients or developers.

Initial Access Token Requirements

  • Client registration is only allowed for (existing) clients that have an (initial) access token that was obtained using the client_credentials grant.
  • The initial access token should contain the scope client.create and no other additional scopes.
  • The initial access token should have similar attributes as OAuth2AuthorizationCode (authorization_code grant) with a time-to-live of 5 mins and can only be used once.
  • The initial access token must be revoked after it is used.
  • The client registration endpoint is a protected resource that requires an OAuth access token (initial access token) containing the client.create scope, therefore, we need to leverage/integrate HttpSecurity.oauth2ResourceServer().jwt().

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions