Skip to content

Commit 7ef25cc

Browse files
committed
Add HttpSecurity.oauth2AuthorizationServer()
Issue gh-17880
1 parent 098574c commit 7ef25cc

File tree

17 files changed

+73
-240
lines changed

17 files changed

+73
-240
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2ClientConfigurer;
7272
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2LoginConfigurer;
7373
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OidcLogoutConfigurer;
74+
import org.springframework.security.config.annotation.web.configurers.oauth2.server.authorization.OAuth2AuthorizationServerConfigurer;
7475
import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer;
7576
import org.springframework.security.config.annotation.web.configurers.ott.OneTimeTokenLoginConfigurer;
7677
import org.springframework.security.config.annotation.web.configurers.saml2.Saml2LoginConfigurer;
@@ -1552,6 +1553,23 @@ public HttpSecurity oauth2ResourceServer(
15521553
return HttpSecurity.this;
15531554
}
15541555

1556+
/**
1557+
* Configures OAuth 2.1 Authorization Server support.
1558+
* @param oauth2AuthorizationServerCustomizer the {@link Customizer} providing access
1559+
* to the {@link OAuth2AuthorizationServerConfigurer} for further customizations
1560+
* @return the {@link HttpSecurity} for further customizations
1561+
* @throws Exception
1562+
* @since 7.0
1563+
* @see <a target="_blank" href=
1564+
* "https://www.ietf.org/archive/id/draft-ietf-oauth-v2-1-13.html">OAuth 2.1
1565+
* Authorization Framework</a>
1566+
*/
1567+
public HttpSecurity oauth2AuthorizationServer(
1568+
Customizer<OAuth2AuthorizationServerConfigurer> oauth2AuthorizationServerCustomizer) throws Exception {
1569+
oauth2AuthorizationServerCustomizer.customize(getOrApply(new OAuth2AuthorizationServerConfigurer()));
1570+
return HttpSecurity.this;
1571+
}
1572+
15551573
/**
15561574
* Configures One-Time Token Login Support.
15571575
*

config/src/main/java/org/springframework/security/config/annotation/web/configuration/OAuth2AuthorizationServerConfiguration.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.springframework.security.web.SecurityFilterChain;
4141

4242
/**
43-
* {@link Configuration} for OAuth 2.0 Authorization Server support.
43+
* {@link Configuration} for OAuth 2.1 Authorization Server support.
4444
*
4545
* @author Joe Grandja
4646
* @since 7.0
@@ -53,11 +53,8 @@ public class OAuth2AuthorizationServerConfiguration {
5353
@Order(Ordered.HIGHEST_PRECEDENCE)
5454
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
5555
// @formatter:off
56-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
57-
OAuth2AuthorizationServerConfigurer.authorizationServer();
5856
http
59-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
60-
.with(authorizationServerConfigurer, Customizer.withDefaults())
57+
.oauth2AuthorizationServer(Customizer.withDefaults())
6158
.authorizeHttpRequests((authorize) ->
6259
authorize.anyRequest().authenticated()
6360
);

config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/server/authorization/OAuth2AuthorizationServerConfigurer.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
import org.springframework.util.Assert;
6161

6262
/**
63-
* An {@link AbstractHttpConfigurer} for OAuth 2.0 Authorization Server support.
63+
* An {@link AbstractHttpConfigurer} for OAuth 2.1 Authorization Server support.
6464
*
6565
* @author Joe Grandja
6666
* @author Daniel Garnier-Moiroux
@@ -91,16 +91,6 @@ public final class OAuth2AuthorizationServerConfigurer
9191

9292
private RequestMatcher endpointsMatcher;
9393

94-
/**
95-
* Returns a new instance of {@link OAuth2AuthorizationServerConfigurer} for
96-
* configuring.
97-
* @return a new instance of {@link OAuth2AuthorizationServerConfigurer} for
98-
* configuring
99-
*/
100-
public static OAuth2AuthorizationServerConfigurer authorizationServer() {
101-
return new OAuth2AuthorizationServerConfigurer();
102-
}
103-
10494
/**
10595
* Sets the repository of registered clients.
10696
* @param registeredClientRepository the repository of registered clients
@@ -383,6 +373,8 @@ public void init(HttpSecurity httpSecurity) throws Exception {
383373
new OrRequestMatcher(preferredMatchers));
384374
}
385375

376+
httpSecurity.securityMatchers((securityMatchers) -> securityMatchers.requestMatchers(this.endpointsMatcher));
377+
386378
httpSecurity.csrf((csrf) -> csrf.ignoringRequestMatchers(this.endpointsMatcher));
387379

388380
OidcConfigurer oidcConfigurer = getConfigurer(OidcConfigurer.class);

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

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,11 +1271,8 @@ static class AuthorizationServerConfigurationWithSecurityContextRepository
12711271
// @formatter:off
12721272
@Bean
12731273
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
1274-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
1275-
OAuth2AuthorizationServerConfigurer.authorizationServer();
12761274
http
1277-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
1278-
.with(authorizationServerConfigurer, Customizer.withDefaults())
1275+
.oauth2AuthorizationServer(Customizer.withDefaults())
12791276
.authorizeHttpRequests((authorize) ->
12801277
authorize.anyRequest().authenticated()
12811278
)
@@ -1331,11 +1328,8 @@ static class AuthorizationServerConfigurationCustomConsentPage extends Authoriza
13311328
// @formatter:off
13321329
@Bean
13331330
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
1334-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
1335-
OAuth2AuthorizationServerConfigurer.authorizationServer();
13361331
http
1337-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
1338-
.with(authorizationServerConfigurer, (authorizationServer) ->
1332+
.oauth2AuthorizationServer((authorizationServer) ->
13391333
authorizationServer
13401334
.authorizationEndpoint((authorizationEndpoint) ->
13411335
authorizationEndpoint.consentPage(consentPage))
@@ -1359,11 +1353,8 @@ static class AuthorizationServerConfigurationCustomConsentRequest extends Author
13591353
// @formatter:off
13601354
@Bean
13611355
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
1362-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
1363-
OAuth2AuthorizationServerConfigurer.authorizationServer();
13641356
http
1365-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
1366-
.with(authorizationServerConfigurer, (authorizationServer) ->
1357+
.oauth2AuthorizationServer((authorizationServer) ->
13671358
authorizationServer
13681359
.authorizationEndpoint((authorizationEndpoint) ->
13691360
authorizationEndpoint.authenticationProviders(configureAuthenticationProviders()))
@@ -1446,11 +1437,8 @@ static class AuthorizationServerConfigurationCustomAuthorizationEndpoint extends
14461437
// @formatter:off
14471438
@Bean
14481439
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
1449-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
1450-
OAuth2AuthorizationServerConfigurer.authorizationServer();
14511440
http
1452-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
1453-
.with(authorizationServerConfigurer, (authorizationServer) ->
1441+
.oauth2AuthorizationServer((authorizationServer) ->
14541442
authorizationServer
14551443
.authorizationEndpoint((authorizationEndpoint) ->
14561444
authorizationEndpoint
@@ -1490,11 +1478,8 @@ static class AuthorizationServerConfigurationWithPushedAuthorizationRequests
14901478
// @formatter:off
14911479
@Bean
14921480
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
1493-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
1494-
OAuth2AuthorizationServerConfigurer.authorizationServer();
14951481
http
1496-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
1497-
.with(authorizationServerConfigurer, (authorizationServer) ->
1482+
.oauth2AuthorizationServer((authorizationServer) ->
14981483
authorizationServer
14991484
.pushedAuthorizationRequestEndpoint(Customizer.withDefaults())
15001485
)

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,8 @@ static class AuthorizationServerConfigurationWithMetadataCustomizer extends Auth
193193
// @formatter:off
194194
@Bean
195195
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
196-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
197-
OAuth2AuthorizationServerConfigurer.authorizationServer();
198196
http
199-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
200-
.with(authorizationServerConfigurer, (authorizationServer) ->
197+
.oauth2AuthorizationServer((authorizationServer) ->
201198
authorizationServer
202199
.authorizationServerMetadataEndpoint((authorizationServerMetadataEndpoint) ->
203200
authorizationServerMetadataEndpoint

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -596,11 +596,8 @@ static class AuthorizationServerConfigurationCustomTokenEndpoint extends Authori
596596
// @formatter:off
597597
@Bean
598598
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
599-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
600-
OAuth2AuthorizationServerConfigurer.authorizationServer();
601599
http
602-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
603-
.with(authorizationServerConfigurer, (authorizationServer) ->
600+
.oauth2AuthorizationServer((authorizationServer) ->
604601
authorizationServer
605602
.tokenEndpoint((tokenEndpoint) ->
606603
tokenEndpoint
@@ -640,11 +637,8 @@ static class AuthorizationServerConfigurationCustomClientAuthentication extends
640637
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
641638
authenticationSuccessHandler = spy(authenticationSuccessHandler());
642639

643-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
644-
OAuth2AuthorizationServerConfigurer.authorizationServer();
645640
http
646-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
647-
.with(authorizationServerConfigurer, (authorizationServer) ->
641+
.oauth2AuthorizationServer((authorizationServer) ->
648642
authorizationServer
649643
.clientAuthentication((clientAuthentication) ->
650644
clientAuthentication

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -542,11 +542,8 @@ static class AuthorizationServerConfigurationWithPublicClientAuthentication
542542
SecurityFilterChain authorizationServerSecurityFilterChain(
543543
HttpSecurity http, RegisteredClientRepository registeredClientRepository) throws Exception {
544544

545-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
546-
OAuth2AuthorizationServerConfigurer.authorizationServer();
547545
http
548-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
549-
.with(authorizationServerConfigurer, (authorizationServer) ->
546+
.oauth2AuthorizationServer((authorizationServer) ->
550547
authorizationServer
551548
.clientAuthentication((clientAuthentication) ->
552549
clientAuthentication

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -575,11 +575,8 @@ static class AuthorizationServerConfigurationCustomTokenIntrospectionEndpoint
575575
// @formatter:off
576576
@Bean
577577
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
578-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
579-
OAuth2AuthorizationServerConfigurer.authorizationServer();
580578
http
581-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
582-
.with(authorizationServerConfigurer, (authorizationServer) ->
579+
.oauth2AuthorizationServer((authorizationServer) ->
583580
authorizationServer
584581
.tokenIntrospectionEndpoint((tokenIntrospectionEndpoint) ->
585582
tokenIntrospectionEndpoint

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -375,11 +375,8 @@ static class AuthorizationServerConfigurationCustomTokenRevocationEndpoint
375375
// @formatter:off
376376
@Bean
377377
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
378-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
379-
OAuth2AuthorizationServerConfigurer.authorizationServer();
380378
http
381-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
382-
.with(authorizationServerConfigurer, (authorizationServer) ->
379+
.oauth2AuthorizationServer((authorizationServer) ->
383380
authorizationServer
384381
.tokenRevocationEndpoint((tokenRevocationEndpoint) ->
385382
tokenRevocationEndpoint

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

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -650,11 +650,8 @@ static class CustomClientRegistrationConfiguration extends AuthorizationServerCo
650650
@Bean
651651
@Override
652652
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
653-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
654-
OAuth2AuthorizationServerConfigurer.authorizationServer();
655653
http
656-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
657-
.with(authorizationServerConfigurer, (authorizationServer) ->
654+
.oauth2AuthorizationServer((authorizationServer) ->
658655
authorizationServer
659656
.oidc((oidc) ->
660657
oidc
@@ -686,11 +683,8 @@ static class CustomClientMetadataConfiguration extends AuthorizationServerConfig
686683
@Bean
687684
@Override
688685
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
689-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
690-
OAuth2AuthorizationServerConfigurer.authorizationServer();
691686
http
692-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
693-
.with(authorizationServerConfigurer, (authorizationServer) ->
687+
.oauth2AuthorizationServer((authorizationServer) ->
694688
authorizationServer
695689
.oidc((oidc) ->
696690
oidc
@@ -730,11 +724,8 @@ static class ClientSecretExpirationConfiguration extends AuthorizationServerConf
730724
@Bean
731725
@Override
732726
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
733-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
734-
OAuth2AuthorizationServerConfigurer.authorizationServer();
735727
http
736-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
737-
.with(authorizationServerConfigurer, (authorizationServer) ->
728+
.oauth2AuthorizationServer((authorizationServer) ->
738729
authorizationServer
739730
.oidc((oidc) ->
740731
oidc
@@ -771,11 +762,8 @@ static class AuthorizationServerConfiguration {
771762
// @formatter:off
772763
@Bean
773764
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
774-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer =
775-
OAuth2AuthorizationServerConfigurer.authorizationServer();
776765
http
777-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
778-
.with(authorizationServerConfigurer, (authorizationServer) ->
766+
.oauth2AuthorizationServer((authorizationServer) ->
779767
authorizationServer
780768
.oidc((oidc) ->
781769
oidc

0 commit comments

Comments
 (0)