|
15 | 15 | */
|
16 | 16 | package sample.config;
|
17 | 17 |
|
18 |
| -import java.util.UUID; |
19 |
| - |
20 | 18 | import com.nimbusds.jose.jwk.JWKSet;
|
21 | 19 | import com.nimbusds.jose.jwk.RSAKey;
|
22 | 20 | import com.nimbusds.jose.jwk.source.JWKSource;
|
|
28 | 26 |
|
29 | 27 | import org.springframework.context.annotation.Bean;
|
30 | 28 | import org.springframework.context.annotation.Configuration;
|
| 29 | +import org.springframework.context.annotation.Profile; |
31 | 30 | import org.springframework.core.Ordered;
|
32 | 31 | import org.springframework.core.annotation.Order;
|
33 | 32 | import org.springframework.http.MediaType;
|
|
37 | 36 | import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
38 | 37 | import org.springframework.security.config.Customizer;
|
39 | 38 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
40 |
| -import org.springframework.security.oauth2.core.AuthorizationGrantType; |
41 |
| -import org.springframework.security.oauth2.core.ClientAuthenticationMethod; |
42 |
| -import org.springframework.security.oauth2.core.oidc.OidcScopes; |
43 | 39 | import org.springframework.security.oauth2.jwt.JwtDecoder;
|
44 | 40 | import org.springframework.security.oauth2.server.authorization.JdbcOAuth2AuthorizationConsentService;
|
45 | 41 | import org.springframework.security.oauth2.server.authorization.JdbcOAuth2AuthorizationService;
|
46 | 42 | import org.springframework.security.oauth2.server.authorization.client.JdbcRegisteredClientRepository;
|
47 |
| -import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; |
48 | 43 | import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
|
49 | 44 | import org.springframework.security.oauth2.server.authorization.config.annotation.web.configuration.OAuth2AuthorizationServerConfiguration;
|
50 | 45 | import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
|
51 | 46 | import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
|
52 |
| -import org.springframework.security.oauth2.server.authorization.settings.ClientSettings; |
53 |
| -import org.springframework.security.oauth2.server.authorization.settings.TokenSettings; |
54 | 47 | import org.springframework.security.oauth2.server.authorization.token.JwtEncodingContext;
|
55 | 48 | import org.springframework.security.oauth2.server.authorization.token.OAuth2TokenCustomizer;
|
56 | 49 | import org.springframework.security.web.SecurityFilterChain;
|
@@ -131,81 +124,23 @@ public SecurityFilterChain authorizationServerSecurityFilterChain(
|
131 | 124 |
|
132 | 125 | // @formatter:off
|
133 | 126 | @Bean
|
| 127 | + @Profile("!redis") |
134 | 128 | public JdbcRegisteredClientRepository registeredClientRepository(JdbcTemplate jdbcTemplate) {
|
135 |
| - RegisteredClient messagingClient = RegisteredClient.withId(UUID.randomUUID().toString()) |
136 |
| - .clientId("messaging-client") |
137 |
| - .clientSecret("{noop}secret") |
138 |
| - .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC) |
139 |
| - .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE) |
140 |
| - .authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN) |
141 |
| - .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS) |
142 |
| - .redirectUri("http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc") |
143 |
| - .redirectUri("http://127.0.0.1:8080/authorized") |
144 |
| - .postLogoutRedirectUri("http://127.0.0.1:8080/logged-out") |
145 |
| - .scope(OidcScopes.OPENID) |
146 |
| - .scope(OidcScopes.PROFILE) |
147 |
| - .scope("message.read") |
148 |
| - .scope("message.write") |
149 |
| - .scope("user.read") |
150 |
| - .clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build()) |
151 |
| - .build(); |
152 |
| - |
153 |
| - RegisteredClient deviceClient = RegisteredClient.withId(UUID.randomUUID().toString()) |
154 |
| - .clientId("device-messaging-client") |
155 |
| - .clientAuthenticationMethod(ClientAuthenticationMethod.NONE) |
156 |
| - .authorizationGrantType(AuthorizationGrantType.DEVICE_CODE) |
157 |
| - .authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN) |
158 |
| - .scope("message.read") |
159 |
| - .scope("message.write") |
160 |
| - .build(); |
161 |
| - |
162 |
| - RegisteredClient tokenExchangeClient = RegisteredClient.withId(UUID.randomUUID().toString()) |
163 |
| - .clientId("token-client") |
164 |
| - .clientSecret("{noop}token") |
165 |
| - .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC) |
166 |
| - .authorizationGrantType(new AuthorizationGrantType("urn:ietf:params:oauth:grant-type:token-exchange")) |
167 |
| - .scope("message.read") |
168 |
| - .scope("message.write") |
169 |
| - .build(); |
170 |
| - |
171 |
| - RegisteredClient mtlsDemoClient = RegisteredClient.withId(UUID.randomUUID().toString()) |
172 |
| - .clientId("mtls-demo-client") |
173 |
| - .clientAuthenticationMethod(ClientAuthenticationMethod.TLS_CLIENT_AUTH) |
174 |
| - .clientAuthenticationMethod(ClientAuthenticationMethod.SELF_SIGNED_TLS_CLIENT_AUTH) |
175 |
| - .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS) |
176 |
| - .scope("message.read") |
177 |
| - .scope("message.write") |
178 |
| - .clientSettings( |
179 |
| - ClientSettings.builder() |
180 |
| - .x509CertificateSubjectDN("CN=demo-client-sample,OU=Spring Samples,O=Spring,C=US") |
181 |
| - .jwkSetUrl("http://127.0.0.1:8080/jwks") |
182 |
| - .build() |
183 |
| - ) |
184 |
| - .tokenSettings( |
185 |
| - TokenSettings.builder() |
186 |
| - .x509CertificateBoundAccessTokens(true) |
187 |
| - .build() |
188 |
| - ) |
189 |
| - .build(); |
190 |
| - |
191 |
| - // Save registered client's in db as if in-memory |
192 | 129 | JdbcRegisteredClientRepository registeredClientRepository = new JdbcRegisteredClientRepository(jdbcTemplate);
|
193 |
| - registeredClientRepository.save(messagingClient); |
194 |
| - registeredClientRepository.save(deviceClient); |
195 |
| - registeredClientRepository.save(tokenExchangeClient); |
196 |
| - registeredClientRepository.save(mtlsDemoClient); |
197 |
| - |
| 130 | + RegisteredClients.defaults().forEach(registeredClientRepository::save); |
198 | 131 | return registeredClientRepository;
|
199 | 132 | }
|
200 | 133 | // @formatter:on
|
201 | 134 |
|
202 | 135 | @Bean
|
| 136 | + @Profile("!redis") |
203 | 137 | public JdbcOAuth2AuthorizationService authorizationService(JdbcTemplate jdbcTemplate,
|
204 | 138 | RegisteredClientRepository registeredClientRepository) {
|
205 | 139 | return new JdbcOAuth2AuthorizationService(jdbcTemplate, registeredClientRepository);
|
206 | 140 | }
|
207 | 141 |
|
208 | 142 | @Bean
|
| 143 | + @Profile("!redis") |
209 | 144 | public JdbcOAuth2AuthorizationConsentService authorizationConsentService(JdbcTemplate jdbcTemplate,
|
210 | 145 | RegisteredClientRepository registeredClientRepository) {
|
211 | 146 | // Will be used by the ConsentController
|
@@ -235,6 +170,7 @@ public AuthorizationServerSettings authorizationServerSettings() {
|
235 | 170 | }
|
236 | 171 |
|
237 | 172 | @Bean
|
| 173 | + @Profile("!redis") |
238 | 174 | public EmbeddedDatabase embeddedDatabase() {
|
239 | 175 | // @formatter:off
|
240 | 176 | return new EmbeddedDatabaseBuilder()
|
|
0 commit comments