-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
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
(referenceOidcProviderConfigurationEndpointFilter
)OidcClientRegistration
(referenceOidcProviderConfiguration
)OidcClientMetadataClaimAccessor
(referenceOidcProviderMetadataClaimAccessor
)OidcClientMetadataClaimNames
(referenceOidcProviderMetadataClaimNames
)OidcClientRegistrationHttpMessageConverter
(referenceOidcProviderConfigurationHttpMessageConverter
)
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/integrateHttpSecurity.oauth2ResourceServer().jwt()
.