4646import org .springframework .security .oauth2 .server .authorization .authentication .OAuth2TokenRevocationAuthenticationProvider ;
4747import org .springframework .security .oauth2 .server .authorization .client .RegisteredClientRepository ;
4848import org .springframework .security .oauth2 .server .authorization .config .ProviderSettings ;
49+ import org .springframework .security .oauth2 .server .authorization .oidc .web .OidcClientRegistrationEndpointFilter ;
4950import org .springframework .security .oauth2 .server .authorization .oidc .web .OidcProviderConfigurationEndpointFilter ;
5051import org .springframework .security .oauth2 .server .authorization .web .NimbusJwkSetEndpointFilter ;
5152import org .springframework .security .oauth2 .server .authorization .web .OAuth2AuthorizationEndpointFilter ;
8081 * @see NimbusJwkSetEndpointFilter
8182 * @see OidcProviderConfigurationEndpointFilter
8283 * @see OAuth2ClientAuthenticationFilter
84+ * @see OidcClientRegistrationEndpointFilter
8385 */
8486public final class OAuth2AuthorizationServerConfigurer <B extends HttpSecurityBuilder <B >>
8587 extends AbstractHttpConfigurer <OAuth2AuthorizationServerConfigurer <B >, B > {
@@ -99,6 +101,10 @@ public final class OAuth2AuthorizationServerConfigurer<B extends HttpSecurityBui
99101 NimbusJwkSetEndpointFilter .DEFAULT_JWK_SET_ENDPOINT_URI , HttpMethod .GET .name ());
100102 private final RequestMatcher oidcProviderConfigurationEndpointMatcher = new AntPathRequestMatcher (
101103 OidcProviderConfigurationEndpointFilter .DEFAULT_OIDC_PROVIDER_CONFIGURATION_ENDPOINT_URI , HttpMethod .GET .name ());
104+ private final RequestMatcher oidcClientRegistrationEndpointMatcher = new AntPathRequestMatcher (
105+ OidcClientRegistrationEndpointFilter .DEFAULT_OIDC_CLIENT_REGISTRATION_ENDPOINT ,
106+ HttpMethod .POST .name ()
107+ );
102108
103109 /**
104110 * Sets the repository of registered clients.
@@ -145,7 +151,7 @@ public List<RequestMatcher> getEndpointMatchers() {
145151 // TODO Initialize matchers using URI's from ProviderSettings
146152 return Arrays .asList (this .authorizationEndpointMatcher , this .tokenEndpointMatcher ,
147153 this .tokenRevocationEndpointMatcher , this .jwkSetEndpointMatcher ,
148- this .oidcProviderConfigurationEndpointMatcher );
154+ this .oidcProviderConfigurationEndpointMatcher , this . oidcClientRegistrationEndpointMatcher );
149155 }
150156
151157 @ Override
@@ -211,6 +217,12 @@ public void configure(B builder) {
211217 builder .addFilterBefore (postProcess (oidcProviderConfigurationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
212218 }
213219
220+ RegisteredClientRepository registeredClientRepository = getRegisteredClientRepository (builder );
221+
222+ OidcClientRegistrationEndpointFilter oidcClientRegistrationEndpointFilter =
223+ new OidcClientRegistrationEndpointFilter (registeredClientRepository );
224+ builder .addFilterBefore (postProcess (oidcClientRegistrationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
225+
214226 JWKSource <SecurityContext > jwkSource = getJwkSource (builder );
215227 NimbusJwkSetEndpointFilter jwkSetEndpointFilter = new NimbusJwkSetEndpointFilter (
216228 jwkSource ,
@@ -227,7 +239,7 @@ public void configure(B builder) {
227239
228240 OAuth2AuthorizationEndpointFilter authorizationEndpointFilter =
229241 new OAuth2AuthorizationEndpointFilter (
230- getRegisteredClientRepository ( builder ) ,
242+ registeredClientRepository ,
231243 getAuthorizationService (builder ),
232244 providerSettings .authorizationEndpoint ());
233245 builder .addFilterBefore (postProcess (authorizationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
0 commit comments