Skip to content

Commit e14e27c

Browse files
committed
Configure demo-authorizationserver sample with one SecurityFilterChain
1 parent 20e0c65 commit e14e27c

File tree

2 files changed

+48
-115
lines changed

2 files changed

+48
-115
lines changed

samples/demo-authorizationserver/src/main/java/sample/config/AuthorizationServerConfig.java

Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,25 @@
2222
import com.nimbusds.jose.jwk.source.JWKSource;
2323
import com.nimbusds.jose.proc.SecurityContext;
2424
import sample.authentication.DeviceClientAuthenticationProvider;
25+
import sample.federation.FederatedIdentityAuthenticationSuccessHandler;
2526
import sample.federation.FederatedIdentityIdTokenCustomizer;
2627
import sample.jose.Jwks;
2728
import sample.web.authentication.DeviceClientAuthenticationConverter;
2829

2930
import org.springframework.context.annotation.Bean;
3031
import org.springframework.context.annotation.Configuration;
31-
import org.springframework.core.Ordered;
32-
import org.springframework.core.annotation.Order;
33-
import org.springframework.http.MediaType;
3432
import org.springframework.jdbc.core.JdbcTemplate;
3533
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
3634
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
3735
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
3836
import org.springframework.security.config.Customizer;
3937
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
38+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
39+
import org.springframework.security.core.session.SessionRegistry;
40+
import org.springframework.security.core.session.SessionRegistryImpl;
41+
import org.springframework.security.core.userdetails.User;
42+
import org.springframework.security.core.userdetails.UserDetails;
43+
import org.springframework.security.core.userdetails.UserDetailsService;
4044
import org.springframework.security.oauth2.core.AuthorizationGrantType;
4145
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
4246
import org.springframework.security.oauth2.core.oidc.OidcScopes;
@@ -47,15 +51,14 @@
4751
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
4852
import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
4953
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configuration.OAuth2AuthorizationServerConfiguration;
50-
import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
5154
import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
5255
import org.springframework.security.oauth2.server.authorization.settings.ClientSettings;
5356
import org.springframework.security.oauth2.server.authorization.settings.TokenSettings;
5457
import org.springframework.security.oauth2.server.authorization.token.JwtEncodingContext;
5558
import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenCustomizer;
59+
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
5660
import org.springframework.security.web.SecurityFilterChain;
57-
import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;
58-
import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher;
61+
import org.springframework.security.web.session.HttpSessionEventPublisher;
5962

6063
import static org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer.authorizationServer;
6164

@@ -65,12 +68,12 @@
6568
* @author Steve Riesenberg
6669
* @since 1.1
6770
*/
71+
@EnableWebSecurity
6872
@Configuration(proxyBeanMethods = false)
6973
public class AuthorizationServerConfig {
7074
private static final String CUSTOM_CONSENT_PAGE_URI = "/oauth2/consent";
7175

7276
@Bean
73-
@Order(Ordered.HIGHEST_PRECEDENCE)
7477
public SecurityFilterChain authorizationServerSecurityFilterChain(
7578
HttpSecurity http, RegisteredClientRepository registeredClientRepository,
7679
AuthorizationServerSettings authorizationServerSettings) throws Exception {
@@ -97,43 +100,65 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(
97100
DeviceClientAuthenticationProvider deviceClientAuthenticationProvider =
98101
new DeviceClientAuthenticationProvider(registeredClientRepository);
99102

100-
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = authorizationServer();
101-
102103
// @formatter:off
103104
http
104-
.securityMatcher(authorizationServerConfigurer.getEndpointsMatcher())
105-
.with(authorizationServerConfigurer, (authorizationServer) ->
105+
.with(authorizationServer(), (authorizationServer) ->
106106
authorizationServer
107-
.deviceAuthorizationEndpoint(deviceAuthorizationEndpoint ->
107+
.deviceAuthorizationEndpoint((deviceAuthorizationEndpoint) ->
108108
deviceAuthorizationEndpoint.verificationUri("/activate")
109109
)
110-
.deviceVerificationEndpoint(deviceVerificationEndpoint ->
110+
.deviceVerificationEndpoint((deviceVerificationEndpoint) ->
111111
deviceVerificationEndpoint.consentPage(CUSTOM_CONSENT_PAGE_URI)
112112
)
113-
.clientAuthentication(clientAuthentication ->
113+
.clientAuthentication((clientAuthentication) ->
114114
clientAuthentication
115115
.authenticationConverter(deviceClientAuthenticationConverter)
116116
.authenticationProvider(deviceClientAuthenticationProvider)
117117
)
118-
.authorizationEndpoint(authorizationEndpoint ->
118+
.authorizationEndpoint((authorizationEndpoint) ->
119119
authorizationEndpoint.consentPage(CUSTOM_CONSENT_PAGE_URI))
120120
.oidc(Customizer.withDefaults()) // Enable OpenID Connect 1.0
121121
)
122122
.authorizeHttpRequests((authorize) ->
123-
authorize.anyRequest().authenticated()
123+
authorize
124+
.requestMatchers("/assets/**", "/login").permitAll()
125+
.anyRequest().authenticated()
124126
)
125-
// Redirect to the /login page when not authenticated from the authorization endpoint
126-
// NOTE: DefaultSecurityConfig is configured with formLogin.loginPage("/login")
127-
.exceptionHandling((exceptions) -> exceptions
128-
.defaultAuthenticationEntryPointFor(
129-
new LoginUrlAuthenticationEntryPoint("/login"),
130-
new MediaTypeRequestMatcher(MediaType.TEXT_HTML)
131-
)
127+
.formLogin((formLogin) ->
128+
formLogin
129+
.loginPage("/login")
130+
)
131+
.oauth2Login((oauth2Login) ->
132+
oauth2Login
133+
.loginPage("/login")
134+
.successHandler(new FederatedIdentityAuthenticationSuccessHandler())
132135
);
133136
// @formatter:on
134137
return http.build();
135138
}
136139

140+
// @formatter:off
141+
@Bean
142+
public UserDetailsService users() {
143+
UserDetails user = User.withDefaultPasswordEncoder()
144+
.username("user1")
145+
.password("password")
146+
.roles("USER")
147+
.build();
148+
return new InMemoryUserDetailsManager(user);
149+
}
150+
// @formatter:on
151+
152+
@Bean
153+
public SessionRegistry sessionRegistry() {
154+
return new SessionRegistryImpl();
155+
}
156+
157+
@Bean
158+
public HttpSessionEventPublisher httpSessionEventPublisher() {
159+
return new HttpSessionEventPublisher();
160+
}
161+
137162
// @formatter:off
138163
@Bean
139164
public JdbcRegisteredClientRepository registeredClientRepository(JdbcTemplate jdbcTemplate) {

samples/demo-authorizationserver/src/main/java/sample/config/DefaultSecurityConfig.java

Lines changed: 0 additions & 92 deletions
This file was deleted.

0 commit comments

Comments
 (0)