Jwt spring security antmatchers - PullRequest
       5

Jwt spring security antmatchers

0 голосов
/ 29 мая 2020

Конфигурация безопасности Spring

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UsersDetailsService usersDetailsService;
    @Autowired
    private JwtFilter jwtFilter;

    public SecurityConfig(UsersDetailsService usersDetailsService) {
        this.usersDetailsService = usersDetailsService;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(daoAuthenticationProvider());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().cors().and().authorizeRequests()
                .antMatchers("/api/authenticate").anonymous()
                .antMatchers("/api/generateTPAC").anonymous()
                .antMatchers("/api/register").anonymous()
                .antMatchers("/api/generate2FAcode").anonymous()
                .antMatchers("/api/verify-email**").anonymous()
                .antMatchers("/api/retrieveUserInfo").permitAll()
                .antMatchers("/api/validateToken").permitAll()
                .antMatchers("/api/update**").permitAll()
                .antMatchers("/api/uploadImage").permitAll()
                .antMatchers("/api/image").permitAll()
                .anyRequest().authenticated()
                .and()
                .exceptionHandling()
                .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        http.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
    }

    @Bean
    DaoAuthenticationProvider daoAuthenticationProvider() {
        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
        daoAuthenticationProvider.setUserDetailsService(usersDetailsService);
        daoAuthenticationProvider.setPasswordEncoder(passwordEncoder());
        return daoAuthenticationProvider;
    }

    @Bean(name = BeanIds.AUTHENTICATION_MANAGER)
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

}

Здравствуйте, у меня проблемы с настройкой авторизации antMatchers .. Это не работает должным образом. Только то, что работает, - это разрешениеAll и denyAll, анонимный, hasRole, аутентифицированный, не работают .. Я пробовал использовать .access (hasRole ()), но это вообще не работает, хотя ..

1 Ответ

0 голосов
/ 29 мая 2020

Поскольку вы используете UserDetailsService, который возвращает экземпляр интерфейса org.springframework.security.core.userdetails.UserDetails, который использует полномочия.

Таким образом, вы управляете доступом следующим образом:

.antMatchers("/api/authenticate").hasAuthority("ROLE_ANONYMOUS")

или

.antMatchers("/api/authenticate").hasAuthority("ROLE_ADMIN")

Также проверьте свой bean-компонент UserDetailsService. В нем должна быть функция loadUserByUsername, которая возвращает экземпляр org.springframework.security.core.userdetails.UserDetails. Проверьте авторитеты в этом объекте.

...