Skip to content

Implement OpenID Connect 1.0 Client Registration Endpoint #57

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jgrandja opened this issue Apr 21, 2020 · 4 comments
Closed

Implement OpenID Connect 1.0 Client Registration Endpoint #57

jgrandja opened this issue Apr 21, 2020 · 4 comments
Labels
type: enhancement A general enhancement
Milestone

Comments

@jgrandja
Copy link
Collaborator

jgrandja commented Apr 21, 2020

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().
@jgrandja
Copy link
Collaborator Author

jgrandja commented Dec 9, 2020

@ovidiupopa91 Regarding timing for this feature, there is no rush to complete. But I'm thinking late Jan or sometime in Feb would be nice but again not a priority.

I'll provide detailed requirements in this issue sometime tomorrow and then I can answer any questions you have on Gitter. I can be on Gitter Friday morning anytime between 9am-12pm EST, if that timing works for you?

@ghost
Copy link

ghost commented Dec 10, 2020

@jgrandja great. I will go through the requirements and I will contact you on Gitter (during that time frame) if I have any questions.

@jgrandja jgrandja changed the title Epic: OpenID Connect Dynamic Client Registration 1.0 Implement OpenID Connect 1.0 Client Registration Endpoint Dec 10, 2020
@jgrandja jgrandja assigned ghost Dec 10, 2020
@jgrandja jgrandja added type: enhancement A general enhancement and removed status: on-hold We can't start working on this issue yet labels Dec 10, 2020
@ghost
Copy link

ghost commented Dec 11, 2020

Hi @jgrandja . No questions from my side. Enjoy your days off!

@jgrandja
Copy link
Collaborator Author

Excellent @ovidiupopa91 . Enjoy your time off too and we'll chat in the new year !

ghost pushed a commit to ovidiupopa07/spring-authorization-server that referenced this issue Dec 21, 2020
ghost pushed a commit to ovidiupopa07/spring-authorization-server that referenced this issue Jan 4, 2021
ghost pushed a commit to ovidiupopa07/spring-authorization-server that referenced this issue Jan 7, 2021
ghost pushed a commit to ovidiupopa07/spring-authorization-server that referenced this issue Jan 8, 2021
ghost pushed a commit to ovidiupopa07/spring-authorization-server that referenced this issue Jan 8, 2021
@jgrandja jgrandja added this to the 0.1.1 milestone Jan 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement A general enhancement
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant