Код: Выделить всё
@EnableWebSecurity
public class SecurityConfig {
@Value("${auth0.audience}")
private String audience;
@Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
private String issuer;
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
/*
This is where we configure the security required for our endpoints and setup our app to serve as
an OAuth2 Resource Server, using JWT validation.
*/
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/data/actuator/**").permitAll()
.antMatchers(HttpMethod.PUT, "/data/**").hasAuthority("SCOPE_data:write")
.anyRequest().authenticated()
.and().cors()
.and().oauth2ResourceServer().jwt();
return http.build();
}
@Bean
JwtDecoder jwtDecoder() {
/*
By default, Spring Security does not validate the "aud" claim of the token, to ensure that this token is
indeed intended for our app. Adding our own validator is easy to do:
*/
NimbusJwtDecoder jwtDecoder = (NimbusJwtDecoder)
JwtDecoders.fromOidcIssuerLocation(issuer);
OAuth2TokenValidator audienceValidator =
new com.nuance.pindata.health.importer.security.AudienceValidator(audience);
OAuth2TokenValidator withIssuer = JwtValidators.createDefaultWithIssuer(issuer);
OAuth2TokenValidator withAudience = new DelegatingOAuth2TokenValidator(withIssuer, audienceValidator);
jwtDecoder.setJwtValidator(withAudience);
return jwtDecoder;
}
}
Из конфигурации Spring Security HttpSecurity При тестировании он предлагает также не писать модульные тесты для такой конфигурации безопасности. Какой здесь правильный подход? Если мне нужно написать модульный тест, как я могу этого добиться?
Подробнее здесь: https://stackoverflow.com/questions/753 ... g-security