|
48 | 48 | import org.springframework.security.oauth2.jwt.JwtDecoder; |
49 | 49 | import org.springframework.security.oauth2.jwt.JwtIssuerValidator; |
50 | 50 | import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; |
| 51 | +import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationProvider; |
51 | 52 | import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; |
52 | 53 | import org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector; |
53 | 54 | import org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter; |
@@ -273,6 +274,22 @@ void autoConfigurationShouldBeConditionalOnJwtDecoderClass() { |
273 | 274 | .run((context) -> assertThat(getBearerTokenFilter(context)).isNull()); |
274 | 275 | } |
275 | 276 |
|
| 277 | + @Test |
| 278 | + void autoConfigurationWhenJwkSetUriAndIntrospectionUriAvailable() { |
| 279 | + this.contextRunner |
| 280 | + .withPropertyValues("spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://jwk-set-uri.com", |
| 281 | + "spring.security.oauth2.resourceserver.opaquetoken.introspection-uri=https://check-token.com", |
| 282 | + "spring.security.oauth2.resourceserver.opaquetoken.client-id=my-client-id", |
| 283 | + "spring.security.oauth2.resourceserver.opaquetoken.client-secret=my-client-secret") |
| 284 | + .run((context) -> { |
| 285 | + assertThat(context).hasSingleBean(OpaqueTokenIntrospector.class); |
| 286 | + assertThat(context).hasSingleBean(JwtDecoder.class); |
| 287 | + assertThat(getBearerTokenFilter(context)) |
| 288 | + .extracting("authenticationManagerResolver.arg$1.providers").asList() |
| 289 | + .hasAtLeastOneElementOfType(JwtAuthenticationProvider.class); |
| 290 | + }); |
| 291 | + } |
| 292 | + |
276 | 293 | @Test |
277 | 294 | void autoConfigurationWhenIntrospectionUriAvailableShouldConfigureIntrospectionClient() { |
278 | 295 | this.contextRunner |
@@ -305,36 +322,6 @@ void autoConfigurationWhenIntrospectionUriAvailableShouldBeConditionalOnClass() |
305 | 322 | .run((context) -> assertThat(context).doesNotHaveBean(OpaqueTokenIntrospector.class)); |
306 | 323 | } |
307 | 324 |
|
308 | | - @Test |
309 | | - void autoConfigurationWhenBothJwkSetUriAndTokenIntrospectionUriSetShouldFail() { |
310 | | - this.contextRunner |
311 | | - .withPropertyValues( |
312 | | - "spring.security.oauth2.resourceserver.opaquetoken.introspection-uri=https://check-token.com", |
313 | | - "spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://jwk-set-uri.com") |
314 | | - .run((context) -> assertThat(context).hasFailed().getFailure().hasMessageContaining( |
315 | | - "Only one of jwt.jwk-set-uri and opaquetoken.introspection-uri should be configured.")); |
316 | | - } |
317 | | - |
318 | | - @Test |
319 | | - void autoConfigurationWhenBothJwtIssuerUriAndTokenIntrospectionUriSetShouldFail() { |
320 | | - this.contextRunner |
321 | | - .withPropertyValues( |
322 | | - "spring.security.oauth2.resourceserver.opaquetoken.introspection-uri=https://check-token.com", |
323 | | - "spring.security.oauth2.resourceserver.jwt.issuer-uri=https://jwk-oidc-issuer-location.com") |
324 | | - .run((context) -> assertThat(context).hasFailed().getFailure().hasMessageContaining( |
325 | | - "Only one of jwt.issuer-uri and opaquetoken.introspection-uri should be configured.")); |
326 | | - } |
327 | | - |
328 | | - @Test |
329 | | - void autoConfigurationWhenBothJwtKeyLocationAndTokenIntrospectionUriSetShouldFail() { |
330 | | - this.contextRunner |
331 | | - .withPropertyValues( |
332 | | - "spring.security.oauth2.resourceserver.opaquetoken.introspection-uri=https://check-token.com", |
333 | | - "spring.security.oauth2.resourceserver.jwt.public-key-location=classpath:public-key-location") |
334 | | - .run((context) -> assertThat(context).hasFailed().getFailure().hasMessageContaining( |
335 | | - "Only one of jwt.public-key-location and opaquetoken.introspection-uri should be configured.")); |
336 | | - } |
337 | | - |
338 | 325 | @SuppressWarnings("unchecked") |
339 | 326 | @Test |
340 | 327 | void autoConfigurationShouldConfigureResourceServerUsingJwkSetUriAndIssuerUri() throws Exception { |
|
0 commit comments