Как работает аутентификация и управление сессиями в Spring Security? - PullRequest
0 голосов
/ 25 октября 2019

Я пишу тезис о приложении, разработанном с использованием Spring-Boot и Spring-Security в качестве механизма аутентификации. Я хотел бы лучше понять, как сеанс управляется платформой.

Аутентификация выполняется с использованием страницы входа с именем пользователя и паролем, а сеанс сохраняется в файле cookie JSESSIONID. Информация о пользователе содержится в базе данных.

Я знаю, что процесс аутентификации работает в Spring Security следующим образом:

  1. Учетные данные передаются от пользователя кAuthenticationFilter, который создает объект аутентификации, содержащий такие учетные данные;

  2. Созданный объект Authentication проходит через AuthenticationManager, который выбирает право AuthenticationProvider, которое может обрабатывать этот тип аутентификации;

  3. AuthenticationProvider, используя только имя пользователя, извлеченное из объекта аутентификации, вызывает UserDetailsService;

  4. UserDetailsService извлекает информацию о пользователе из базы данных и возвращает объект UserDetails, а именно Принципал, в AuthenticationProvider;

  5. AuthenticationProvider в этот момент проверяет, совпадают ли предоставленные пользователем учетные данные с учетными данными, содержащимися в Принципале. Если да, он инкапсулирует Принципал в объекте Authentication, для которого в этот момент для параметра аутентификации будет установлено значение "true", и возвращает его в AuthenticationManager, что, в свою очередь, возвращает его в AuthenticationFilter;

  6. Теперь AuthenticationFilter сохраняет в SecurityContext объект аутентификации внутри Принципала, содержащий информацию о пользователе, извлеченную из базы данных. SecurityContext сохраняется в ThreadLocal.

Вот часть, которую я не совсем понимаю:

В то же время Другой фильтр должен создать и отправить пользователю файл cookie JSESSIONID, а также локально сохранить сеанс пользователя (значение файла cookie * 1059) и создать привязку. между этим значением сеанса и объектом аутентификации, который содержит принципала внутри с пользовательской информацией ... правильно ??

Мои вопросы:

Является ли процедура правильной? Что такое фильтр на шаге № 7? Где сеанс хранится на стороне сервера? Где сохраняется привязка между сессией и SecurityContext?

Заранее спасибо.

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