Безопасность Spring: какую функцию выполняет AuthenticationManager.authenticate () - PullRequest
0 голосов
/ 04 сентября 2018

Я некоторое время изучал безопасность Spring с JWT и заметил, что в каждом прочитанном уроке имя пользователя и пароль берутся, оборачиваются в UsernamePasswordAuthenticationToken и передаются в AuthenticationManager.authenticate (), что-то вроде этого:

@RequestMapping(value = "${jwt.route.authentication.path}", method = RequestMethod.POST)
public ResponseEntity<?> createAuthenticationToken(@RequestBody JwtAuthenticationRequest authenticationRequest) throws AuthenticationException {

    authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(authenticationRequest.getUsername(), authenticationRequest.getPassword()));

    // Reload password post-security so we can generate the token
    final UserDetails userDetails = userDetailsService.loadUserByUsername(authenticationRequest.getUsername());
    final String token = jwtTokenUtil.generateToken(userDetails);

    // Return the token
    return ResponseEntity.ok(new JwtAuthenticationResponse(token));
}

Мой вопрос: что делает метод аутентификации, почему он используется?

1 Ответ

0 голосов
/ 08 сентября 2018

Из Ссылка безопасности Spring :

AuthenticationManager - это просто интерфейс, поэтому реализация может быть любой, что мы выберем. (...) Реализация по умолчанию в Spring Security называется ProviderManager, и вместо того, чтобы обрабатывать сам запрос аутентификации, она делегирует список настроенных провайдеров AuthenticationProviders, каждый из которых запрашивается по очереди, чтобы узнать, может ли он выполнить аутентификацию. Каждый провайдер либо сгенерирует исключение, либо вернет полностью заполненный объект аутентификации.

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