Spring Security со многими ролями - PullRequest
0 голосов
/ 08 апреля 2020

Я использую пружинную защиту (@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();
        }

В моем случае я хочу аутентифицироваться с одним токеном в другой службе. Любое предложение?

1 Ответ

0 голосов
/ 11 апреля 2020

Ваши права доступа должны быть массивом:

...
"authorities": ["ROLE_INVOICE", "ROLE_NOTIFICATION],
...
...