Skip to content

Commit e133f2f

Browse files
committed
Post-review fixes
Signed-off-by: wheleph <[email protected]>
1 parent 5228576 commit e133f2f

File tree

1 file changed

+59
-65
lines changed
  • oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/config/annotation/web/configurers

1 file changed

+59
-65
lines changed

oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/config/annotation/web/configurers/OidcClientRegistrationTests.java

Lines changed: 59 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,27 @@
1515
*/
1616
package org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers;
1717

18+
import static org.assertj.core.api.Assertions.assertThat;
19+
import static org.hamcrest.CoreMatchers.containsString;
20+
import static org.mockito.ArgumentMatchers.any;
21+
import static org.mockito.BDDMockito.given;
22+
import static org.mockito.BDDMockito.willAnswer;
23+
import static org.mockito.Mockito.mock;
24+
import static org.mockito.Mockito.reset;
25+
import static org.mockito.Mockito.verify;
26+
import static org.mockito.Mockito.verifyNoInteractions;
27+
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
28+
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.jwt;
29+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
30+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
31+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
32+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
33+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
34+
35+
import com.nimbusds.jose.jwk.JWKSet;
36+
import com.nimbusds.jose.jwk.source.JWKSource;
37+
import com.nimbusds.jose.proc.SecurityContext;
38+
import jakarta.servlet.http.HttpServletResponse;
1839
import java.time.Duration;
1940
import java.time.Instant;
2041
import java.time.temporal.ChronoUnit;
@@ -23,13 +44,7 @@
2344
import java.util.List;
2445
import java.util.Map;
2546
import java.util.function.Consumer;
26-
2747
import javax.crypto.spec.SecretKeySpec;
28-
29-
import com.nimbusds.jose.jwk.JWKSet;
30-
import com.nimbusds.jose.jwk.source.JWKSource;
31-
import com.nimbusds.jose.proc.SecurityContext;
32-
import jakarta.servlet.http.HttpServletResponse;
3348
import okhttp3.mockwebserver.MockResponse;
3449
import okhttp3.mockwebserver.MockWebServer;
3550
import org.assertj.core.data.TemporalUnitWithinOffset;
@@ -40,7 +55,6 @@
4055
import org.junit.jupiter.api.Test;
4156
import org.junit.jupiter.api.extension.ExtendWith;
4257
import org.mockito.ArgumentCaptor;
43-
4458
import org.springframework.beans.factory.annotation.Autowired;
4559
import org.springframework.context.annotation.Bean;
4660
import org.springframework.context.annotation.Configuration;
@@ -111,23 +125,6 @@
111125
import org.springframework.util.CollectionUtils;
112126
import org.springframework.web.util.UriComponentsBuilder;
113127

114-
import static org.assertj.core.api.Assertions.assertThat;
115-
import static org.hamcrest.CoreMatchers.containsString;
116-
import static org.mockito.ArgumentMatchers.any;
117-
import static org.mockito.BDDMockito.given;
118-
import static org.mockito.BDDMockito.willAnswer;
119-
import static org.mockito.Mockito.mock;
120-
import static org.mockito.Mockito.reset;
121-
import static org.mockito.Mockito.verify;
122-
import static org.mockito.Mockito.verifyNoInteractions;
123-
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
124-
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.jwt;
125-
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
126-
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
127-
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
128-
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
129-
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
130-
131128
/**
132129
* Integration tests for OpenID Connect Dynamic Client Registration 1.0.
133130
*
@@ -531,8 +528,8 @@ public void requestWhenClientRegistersWithSecretExpirationThenClientRegistration
531528

532529
OidcClientRegistration clientRegistrationResponse = registerClient(clientRegistration);
533530

534-
var expectedSecretExpiryDate = Instant.now().plus(Duration.ofHours(24));
535-
var allowedDelta = new TemporalUnitWithinOffset(1, ChronoUnit.MINUTES);
531+
Instant expectedSecretExpiryDate = Instant.now().plus(Duration.ofHours(24));
532+
TemporalUnitWithinOffset allowedDelta = new TemporalUnitWithinOffset(1, ChronoUnit.MINUTES);
536533

537534
// Returned response contains expiration date
538535
assertThat(clientRegistrationResponse.getClientSecretExpiresAt())
@@ -685,40 +682,52 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h
685682

686683
@EnableWebSecurity
687684
@Configuration(proxyBeanMethods = false)
688-
static class CustomClientMetadataConfiguration extends ClientRegistrationConvertersConfiguration {
689-
690-
private static final List<String> supportedCustomClientMetadata = List.of("custom-metadata-name-1", "custom-metadata-name-2");
685+
static class CustomClientMetadataConfiguration extends AuthorizationServerConfiguration {
691686

687+
// @formatter:off
688+
@Bean
692689
@Override
693-
protected Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter() {
694-
return new CustomRegisteredClientConverter(supportedCustomClientMetadata);
690+
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
691+
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
692+
OAuth2AuthorizationServerConfigurer.authorizationServer();
693+
http
694+
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
695+
.with(authorizationServerConfigurer, (authorizationServer) ->
696+
authorizationServer
697+
.oidc((oidc) ->
698+
oidc
699+
.clientRegistrationEndpoint((clientRegistration) ->
700+
clientRegistration
701+
.authenticationProviders(configureClientRegistrationConverters())
702+
)
703+
)
704+
)
705+
.authorizeHttpRequests((authorize) ->
706+
authorize.anyRequest().authenticated()
707+
);
708+
return http.build();
695709
}
710+
// @formatter:on
696711

697-
@Override
698-
protected Converter<RegisteredClient, OidcClientRegistration> oidcClientRegistrationConverter() {
699-
return new CustomClientRegistrationConverter(supportedCustomClientMetadata);
712+
private Consumer<List<AuthenticationProvider>> configureClientRegistrationConverters() {
713+
// @formatter:off
714+
return (authenticationProviders) ->
715+
authenticationProviders.forEach((authenticationProvider) -> {
716+
List<String> supportedCustomClientMetadata = List.of("custom-metadata-name-1", "custom-metadata-name-2");
717+
if (authenticationProvider instanceof OidcClientRegistrationAuthenticationProvider provider) {
718+
provider.setRegisteredClientConverter(new CustomRegisteredClientConverter(supportedCustomClientMetadata));
719+
provider.setClientRegistrationConverter(new CustomClientRegistrationConverter(supportedCustomClientMetadata));
720+
}
721+
});
722+
// @formatter:on
700723
}
701724

702725
}
703726

704727
@EnableWebSecurity
705728
@Configuration(proxyBeanMethods = false)
706-
static class ClientSecretExpirationConfiguration extends ClientRegistrationConvertersConfiguration {
707-
708-
@Override
709-
protected Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter() {
710-
return new ClientSecretExpirationRegisteredClientConverter();
711-
}
729+
static class ClientSecretExpirationConfiguration extends AuthorizationServerConfiguration {
712730

713-
}
714-
715-
/**
716-
* This test configuration allows to override {@code RegisteredClient} -> {@code OidcClientRegistration} and
717-
* {@code OidcClientRegistration} -> {@code RegisteredClient} converters
718-
*/
719-
@EnableWebSecurity
720-
@Configuration(proxyBeanMethods = false)
721-
static class ClientRegistrationConvertersConfiguration extends AuthorizationServerConfiguration {
722731
// @formatter:off
723732
@Bean
724733
@Override
@@ -749,26 +758,12 @@ private Consumer<List<AuthenticationProvider>> configureClientRegistrationConver
749758
return (authenticationProviders) ->
750759
authenticationProviders.forEach((authenticationProvider) -> {
751760
if (authenticationProvider instanceof OidcClientRegistrationAuthenticationProvider provider) {
752-
var registeredClientConverter = registeredClientConverter();
753-
if (registeredClientConverter != null) {
754-
provider.setRegisteredClientConverter(registeredClientConverter);
755-
}
756-
var oidcClientRegistrationConverter = oidcClientRegistrationConverter();
757-
if (oidcClientRegistrationConverter != null) {
758-
provider.setClientRegistrationConverter(oidcClientRegistrationConverter);
759-
}
761+
provider.setRegisteredClientConverter(new ClientSecretExpirationRegisteredClientConverter());
760762
}
761763
});
762764
// @formatter:on
763765
}
764766

765-
protected Converter<OidcClientRegistration, RegisteredClient> registeredClientConverter() {
766-
return null;
767-
}
768-
769-
protected Converter<RegisteredClient, OidcClientRegistration> oidcClientRegistrationConverter() {
770-
return null;
771-
}
772767
}
773768

774769
@EnableWebSecurity
@@ -921,5 +916,4 @@ public RegisteredClient convert(OidcClientRegistration clientRegistration) {
921916
return registeredClientBuilder.build();
922917
}
923918
}
924-
925919
}

0 commit comments

Comments
 (0)