Главная страница
Навигация по странице:

  • Authorities

  • 31.1. Опиши процесс получения доступа

  • GrantedAuthority

  • 31.2. В чем разница между hasRole() и hasAuthority() в Spring Security

  • Есть также и другие виды аутентификации

  • 2. Remember Me Authentication

  • 3. OAuth 2.0 ( Open Authorization 2.0)

  • Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми


    Скачать 0.73 Mb.
    НазваниеИнструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
    Дата13.11.2022
    Размер0.73 Mb.
    Формат файлаdocx
    Имя файла2.docx
    ТипИнструкция
    #785689
    страница19 из 26
    1   ...   15   16   17   18   19   20   21   22   ...   26

    31. Объекты Principal, Authorities, Authentication?


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

    Authorities – представляют полномочия(разрешения), которые были предоставлены принципалу (или например, роли).

    Authentication – объект Authentication с именем и паролем, полученными от клиента и требующими проверку. Имя хранится в principal, а пароль в credenticals (до проверки, после проверки будет иначе).

    31.1. Опиши процесс получения доступа?


    После аутентификации в поле Principal объекта. Authentication будет реальный пользователь в виде UserDetails, поле Credentials обнуляется, то есть имя и пароль перемещаются объект Principal.

    SecurityContextHolder используется для хранения контекста безопасности (security context). Кто является действующим в данный момент пользователем, прошел ли он проверку подлинности, какие полномочия у него есть.

    Spring Security автоматически связывает информацию аутентификации с текущим потоком, когда пользователь входит в систему, и автоматически очищает информацию аутентификации текущего потока, когда пользователь выходит из системы.

    getAuthentication () – возвращает информацию об аутентификации;

    getAuthorities () – список информации об авторизации, по умолчанию использует некоторые классы реализации интерфейса;

    GrantedAuthority() – обычно ряд строк, представляющих информацию об авторизации;

    getCredentials () информация о пароле и строка пароля, введенная пользователем, обычно удаляются после аутентификации для обеспечения безопасности;

    getDetails () – детали, интерфейс реализации в веб-приложении обычно WebAuthenticationDetails, который записывает IP-адрес посетителя и значение sessionId;

    getPrincipal () – возвращает информацию об идентификаторе. Наиболее важная информация об идентичности в большинстве случаев возвращает класс реализации интерфейса.

    Прежде чем попасть в контроллер, запрос проходит через цепочку фильтров. UsernamePasswordAuthenticationFilter получает имя и пароль и формирует объект Authentication. Имя хранится в поле principal, а пароль - credenticals (строковое представление), isAuthenticated() устанавливается в false.

    На следующем этапе AuthenticationManager при помощи единственного метода authenticate() выполняет аутентификацию, сама проверка делегируется конкретным провайдерам (In-Memory, Jdbc, LDAP и др - в зависимости от того, как хранится реальный пользователь).

    Если аутентификация не прошла (имя и пароль неверны), то выбрасывается исключение BadCredentials. В случае же успеха возвращается тоже объект Authentication, но заполненный по-другому: в поле Principal объекта Authentication будет реальный пользователь в виде UserDetails (сюда перемещаются имя и пароль), поле Credentials обнуляется, а isAuthenticated() меняется с false на true.

    31.2. В чем разница между hasRole() и hasAuthority() в Spring Security?


    hasRole() определяет роль (для примера: "Employee" или "Visitor"), в то время как hasAuthority() определяет права (для примера: один Employee может использовать только Admin_Root, но другой тоже может использовать User_Root.

    32. Чем отличается InMemoryAuthentication от basicAuthentication?


    BasicAuthentication – это механизм чтения имени пользователя и пароля, а In-Memory Authentication - это механизм хранения.

    InMemoryAuthentication – означает, что пользователь хранится не в базе, а в оперативной памяти приложения до тех пор, пока оно запущено. И чтобы отредактировать пользователя, придется заново запускать приложение. Этот вариант полезен для экспериментов во время разработки.

    basicAuthentication – аутентификация путем сравнения пары идентификатор/пароль, зашифрованные с использованием кодировки base64 с теми, что хранятся в системе. Чтобы получить доступ к ресурсам (Resource), защищенные Basic Authentication, пользователь должен отправить request и в том request должна содержаться информация username/password прикрепленная на Header.

    Есть также и другие виды аутентификации:

    1. LDAP – аутентификация. Lightweight Directory Access Protocol (LDAP) — протокол аутентификации учетных записей пользователей в организациях.

    Позволяет определять структуру пользователей и групп пользователей, назначать им права доступа.

    2. Remember Me Authentication – это встроенный механизм распознавания, благодаря которому пользователям не нужно вводить учетные данные при каждом посещении сайта.

    Spring Security предлагает несколько способов реализации этого типа аутентификации — например, хеширование данных с помощью секретного ключа или хранение постоянного токена в базе данных.

    3. OAuth 2.0 (Open Authorization 2.0) – это открытый стандарт проверки прав пользователя с помощью сервиса авторизации.

    Он также используется для реализации таких функций, как вход через учетные записи Facebook, Google и других крупных площадок.

    Настройка сервера авторизации и внедрение OAuth сопряжены с высоким риском и могут отнять много времени. В этом процессе легко ошибиться и создать уязвимость. Spring Security предлагает защитить сайт с помощью готовых инструментов — например, Auth0.

    4. Управление сессией – Spring Security предоставляет механизмы для управления сеансом пользователя. Он создает эти механизмы контроля при входе в систему и уничтожает при выходе.

    Для обеспечения безопасности доступны дополнительные средства, которые помогают, например, избежать отслеживания сеансов.


    1   ...   15   16   17   18   19   20   21   22   ...   26


    написать администратору сайта