46
46
import org .springframework .security .oauth2 .server .authorization .authentication .OAuth2TokenRevocationAuthenticationProvider ;
47
47
import org .springframework .security .oauth2 .server .authorization .client .RegisteredClientRepository ;
48
48
import org .springframework .security .oauth2 .server .authorization .config .ProviderSettings ;
49
+ import org .springframework .security .oauth2 .server .authorization .oidc .web .OidcClientRegistrationEndpointFilter ;
49
50
import org .springframework .security .oauth2 .server .authorization .oidc .web .OidcProviderConfigurationEndpointFilter ;
50
51
import org .springframework .security .oauth2 .server .authorization .web .NimbusJwkSetEndpointFilter ;
51
52
import org .springframework .security .oauth2 .server .authorization .web .OAuth2AuthorizationEndpointFilter ;
80
81
* @see NimbusJwkSetEndpointFilter
81
82
* @see OidcProviderConfigurationEndpointFilter
82
83
* @see OAuth2ClientAuthenticationFilter
84
+ * @see OidcClientRegistrationEndpointFilter
83
85
*/
84
86
public final class OAuth2AuthorizationServerConfigurer <B extends HttpSecurityBuilder <B >>
85
87
extends AbstractHttpConfigurer <OAuth2AuthorizationServerConfigurer <B >, B > {
@@ -99,6 +101,10 @@ public final class OAuth2AuthorizationServerConfigurer<B extends HttpSecurityBui
99
101
NimbusJwkSetEndpointFilter .DEFAULT_JWK_SET_ENDPOINT_URI , HttpMethod .GET .name ());
100
102
private final RequestMatcher oidcProviderConfigurationEndpointMatcher = new AntPathRequestMatcher (
101
103
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
+ );
102
108
103
109
/**
104
110
* Sets the repository of registered clients.
@@ -145,7 +151,7 @@ public List<RequestMatcher> getEndpointMatchers() {
145
151
// TODO Initialize matchers using URI's from ProviderSettings
146
152
return Arrays .asList (this .authorizationEndpointMatcher , this .tokenEndpointMatcher ,
147
153
this .tokenRevocationEndpointMatcher , this .jwkSetEndpointMatcher ,
148
- this .oidcProviderConfigurationEndpointMatcher );
154
+ this .oidcProviderConfigurationEndpointMatcher , this . oidcClientRegistrationEndpointMatcher );
149
155
}
150
156
151
157
@ Override
@@ -211,6 +217,12 @@ public void configure(B builder) {
211
217
builder .addFilterBefore (postProcess (oidcProviderConfigurationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
212
218
}
213
219
220
+ RegisteredClientRepository registeredClientRepository = getRegisteredClientRepository (builder );
221
+
222
+ OidcClientRegistrationEndpointFilter oidcClientRegistrationEndpointFilter =
223
+ new OidcClientRegistrationEndpointFilter (registeredClientRepository );
224
+ builder .addFilterBefore (postProcess (oidcClientRegistrationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
225
+
214
226
JWKSource <SecurityContext > jwkSource = getJwkSource (builder );
215
227
NimbusJwkSetEndpointFilter jwkSetEndpointFilter = new NimbusJwkSetEndpointFilter (
216
228
jwkSource ,
@@ -227,7 +239,7 @@ public void configure(B builder) {
227
239
228
240
OAuth2AuthorizationEndpointFilter authorizationEndpointFilter =
229
241
new OAuth2AuthorizationEndpointFilter (
230
- getRegisteredClientRepository ( builder ) ,
242
+ registeredClientRepository ,
231
243
getAuthorizationService (builder ),
232
244
providerSettings .authorizationEndpoint ());
233
245
builder .addFilterBefore (postProcess (authorizationEndpointFilter ), AbstractPreAuthenticatedProcessingFilter .class );
0 commit comments