|
32 | 32 | import org.springframework.core.annotation.Order; |
33 | 33 | import org.springframework.security.config.Customizer; |
34 | 34 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
| 35 | +import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer; |
35 | 36 | import org.springframework.security.core.userdetails.User; |
36 | 37 | import org.springframework.security.core.userdetails.UserDetails; |
37 | 38 | import org.springframework.security.core.userdetails.UserDetailsService; |
38 | 39 | import org.springframework.security.oauth2.core.AuthorizationGrantType; |
39 | 40 | import org.springframework.security.oauth2.core.ClientAuthenticationMethod; |
40 | 41 | import org.springframework.security.oauth2.core.oidc.OidcScopes; |
| 42 | +import org.springframework.security.oauth2.jwt.JwtDecoder; |
41 | 43 | import org.springframework.security.oauth2.server.authorization.client.InMemoryRegisteredClientRepository; |
42 | 44 | import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; |
43 | 45 | import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository; |
@@ -66,7 +68,9 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity h |
66 | 68 | .exceptionHandling((exceptions) -> exceptions |
67 | 69 | .authenticationEntryPoint( |
68 | 70 | new LoginUrlAuthenticationEntryPoint("/login")) |
69 | | - ); |
| 71 | + ) |
| 72 | + // Accept access tokens for User Info and/or Client Registration |
| 73 | + .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt); |
70 | 74 | // @formatter:on |
71 | 75 |
|
72 | 76 | return http.build(); |
@@ -115,6 +119,7 @@ public RegisteredClientRepository registeredClientRepository() { |
115 | 119 | .redirectUri("http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc") |
116 | 120 | .redirectUri("http://127.0.0.1:8080/authorized") |
117 | 121 | .scope(OidcScopes.OPENID) |
| 122 | + .scope(OidcScopes.PROFILE) |
118 | 123 | .scope("message.read") |
119 | 124 | .scope("message.write") |
120 | 125 | .clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build()) |
@@ -153,6 +158,11 @@ private static KeyPair generateRsaKey() { // <6> |
153 | 158 | } |
154 | 159 |
|
155 | 160 | @Bean // <7> |
| 161 | + public JwtDecoder jwtDecoder(JWKSource<SecurityContext> jwkSource) { |
| 162 | + return OAuth2AuthorizationServerConfiguration.jwtDecoder(jwkSource); |
| 163 | + } |
| 164 | + |
| 165 | + @Bean // <8> |
156 | 166 | public AuthorizationServerSettings authorizationServerSettings() { |
157 | 167 | return AuthorizationServerSettings.builder().build(); |
158 | 168 | } |
|
0 commit comments