From 14cedd7895be5d20df92433ead81c045a7cdeb8e Mon Sep 17 00:00:00 2001 From: Steve Riesenberg Date: Wed, 18 May 2022 17:06:36 -0500 Subject: [PATCH] Add Client Registration Endpoint in ref doc Closes gh-672 --- .../src/docs/asciidoc/protocol-endpoints.adoc | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/src/docs/asciidoc/protocol-endpoints.adoc b/docs/src/docs/asciidoc/protocol-endpoints.adoc index f08963b8..05d48edb 100644 --- a/docs/src/docs/asciidoc/protocol-endpoints.adoc +++ b/docs/src/docs/asciidoc/protocol-endpoints.adoc @@ -266,4 +266,33 @@ You can customize the ID Token by providing an xref:core-model-components.adoc#o [[oidc-client-registration-endpoint]] == OpenID Connect 1.0 Client Registration Endpoint -This section is under construction. +The following example shows how to enable the https://openid.net/specs/openid-connect-registration-1_0.html#ClientRegistration[OpenID Connect 1.0 Client Registration Endpoint]: + +[source,java] +---- +@Bean +public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { + OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = + new OAuth2AuthorizationServerConfigurer<>(); + http.apply(authorizationServerConfigurer); + http.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt); + + authorizationServerConfigurer + .oidc(oidc -> oidc + .clientRegistrationEndpoint(Customizer.withDefaults()) + ); + + return http.build(); +} + +@Bean +public JwtDecoder jwtDecoder(JWKSource jwkSource) { + return OAuth2AuthorizationServerConfiguration.jwtDecoder(jwkSource); +} +---- + +[NOTE] +A `JwtDecoder` is *REQUIRED* for the OpenID Connect 1.0 Client Registration Endpoint. See xref:configuration-model.adoc#default-configuration[Default configuration] for more information. + +`OidcClientRegistrationEndpointConfigurer` configures the `OidcClientRegistrationEndpointFilter` and registers it with the OAuth2 authorization server `SecurityFilterChain` `@Bean`. +`OidcClientRegistrationEndpointFilter` is the `Filter` that processes https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationRequest[Client Registration requests] and returns the https://openid.net/specs/openid-connect-registration-1_0.html#RegistrationResponse[`OidcClientRegistration`].