Я использую пружинную защиту (@EnableWebSecurity
). Когда я пытаюсь авторизоваться с помощью этого токена на конечной точке "/invoice"
или "/notification"
, я всегда получаю запрещенный ответ, но если я не использую атрибут hasRole
или не использую токен только с одной ролью, все работает правильно.
Token:
{
....
"exp": 1586366900,
"iat": 1586348900,
"authorities": "ROLE_INVOICE,ROLE_NOTIFICATION",
....
}
Класс WebSecurityConfigurerAdapter:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable() //Disabling CSRF
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling().authenticationEntryPoint((req, rsp, e) -> rsp.sendError(HttpServletResponse.SC_UNAUTHORIZED))
.and()
.addFilterAfter(new JwtTokenAuthenticationFilter(jwtConfig), UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(HttpMethod.POST, jwtConfig.getUri()).permitAll()
.antMatchers("/invoice/**").hasRole("INVOICE")
.antMatchers("/notification/**").hasRole("NOTIFICATION")
.antMatchers("/test/**")
// Any other request must be authenticated
.anyRequest().authenticated();
}
В моем случае я хочу аутентифицироваться с одним токеном в другой службе. Любое предложение?