Я использую SpringBoot, и у меня возникла довольно странная проблема.У меня есть сервер ресурсов, и он отлично работает с application.properties, но когда я пытался перенести .properties в .yml, я получаю ошибку UNATHORIZED, когда отправляю запрос с токеном JWT на один из моих контроллеров.
application.yml
security:
oauth2:
resource:
id: ouath2_id
application.properties
security.oauth2.resource.id=oauth2_id
ResourceConfig class
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@EnableResourceServer
public class ResourceConfig extends ResourceServerConfigurerAdapter {
@Value("${security.oauth2.resource.id}")
private String resourceId;
private String publicKey = "xxx";
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
System.out.println("RESORCEID: " + resourceId); //IT IS LOADING CORRECTLY
resources
.resourceId(resourceId)
.tokenServices(tokenServices())
.tokenStore(tokenStore())
.authenticationEntryPoint(customAuthEntryPoint())
.accessDeniedHandler(customDeniedHandler());
}
@Bean
public AuthenticationEntryPoint customAuthEntryPoint(){
return new AuthFailureHandler();
}
@Bean
public AccessDeniedHandler customDeniedHandler(){
return new AccessDeniedHandlerImpl();
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.anonymous().disable()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS).permitAll()
.antMatchers("/api/**").authenticated();
}
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setVerifierKey(publicKey);
return converter;
}
@Bean
@Primary
public DefaultTokenServices tokenServices() {
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore());
defaultTokenServices.setSupportRefreshToken(true);
defaultTokenServices.setTokenEnhancer(accessTokenConverter());
return defaultTokenServices;
}
}
Я проверил, и единственное свойство, которое язагрузка формы poperties является resourceId, и он получает желаемое значение.
Так что единственное отличие - это .yml вместо .properties
Понятия не имею, в чем проблема.