Spring security: пользовательский провайдер аутентификации не работает - PullRequest
0 голосов
/ 19 мая 2018

Я использую пользовательский провайдер аутентификации, который реализует «AuthenticationProvider».В SecurityConfig я использую следующие конфиги.

http.csrf().disable().authorizeRequests()
    .antMatchers("/login/authenticateUser").permitAll()
    .and()
    .authorizeRequests().anyRequest().authenticated();

В приведенной выше конфигурации не вызывается пользовательский поставщик аутентификации для API входа в систему, но для других API не вызывается пользовательский поставщик аутентификации, который выдает запрещенную ошибку.

@Autowired
private CustomAuthenticationProvider authProvider;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {

    auth.authenticationProvider(authProvider);          
}
@Override
protected void configure(HttpSecurity http) throws Exception {

    http.csrf().disable().authorizeRequests()
    .antMatchers("/login/authenticateUser").permitAll()
    .and()
    .authorizeRequests().anyRequest().authenticated();      
}

Пользовательская проверка подлинностипровайдер:

@Component

открытый класс CustomAuthenticationProvider реализует AuthenticationProvider {

static Map<String, UserDetails> userSessionList = new HashMap<String, UserDetails>();

@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {

    String userName = authentication.getName();
    String password = authentication.getCredentials().toString().split(";")[0];

    if (checkUserNameAndPassword(userName, password)) {
        List<GrantedAuthority> grantedAuths = new ArrayList<>();
        grantedAuths.add(() -> {
            return "AUTH_USER";
        });
        Authentication auth = new UsernamePasswordAuthenticationToken(userName, password, grantedAuths);
        return auth;
    } else {
        throw new AuthenticationCredentialsNotFoundException("Invalid Credentials!");
    }
}

@Override
public boolean supports(Class<?> authentication) {
    //return UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication);
    return authentication.equals(UsernamePasswordAuthenticationToken.class);
}

Пожалуйста, помогите мне решить эту проблему.Поставщик пользовательской аутентификации должен вызываться для всех запросов, кроме контроллера входа в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...