Аутентификация Java и служба авторизации

редактировать

Служба аутентификации и авторизации Java или JAAS, произносится как «Jazz», это Java реализация стандартной подключаемой аутентификации Модуль (PAM) структура информационной безопасности. JAAS был представлен как библиотека расширений для Java Platform, Standard Edition 1.3 и был интегрирован в версию 1.4.

JAAS имеет своей главной целью разделение проблем аутентификации пользователей, чтобы ими можно было управлять независимо. В то время как прежний механизм аутентификации содержал информацию о том, откуда произошел код и кто подписал этот код, JAAS добавляет маркер о том, кто запускает код. Расширяя векторы проверки, JAAS расширяет архитектуру безопасности для приложений Java, которым требуются модули аутентификации и авторизации.

Содержание
  • 1 Администрирование
  • 2 Интерфейс приложения
  • 3 Интеграция системы безопасности
  • 4 Модули входа в систему
    • 4.1 LoginModule (javax.security.auth.spi.LoginModule)
    • 4.2 LoginContext ( javax.security.auth.login.LoginContext)
    • 4.3 Тема (javax.security.auth.Subject)
    • 4.4 Принципал (java.security.Principal)
    • 4.5 Учетные данные
  • 5 Аутентификация формы
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Администрирование

Для системного администратора JAAS состоит из двух типов файла конфигурации :

  • *.login.conf: указывает, как вставлять поставляемые поставщиком модули login в определенные приложения
  • *.policy: указывает, какие удостоверения (пользователям или программам) и какие разрешения предоставлены

Например, в приложении может быть файл login.conf, указывающий, как должны запускаться различные механизмы аутентификации для аутентификации пользователя:

PetShopApplication {com.sun.security.auth.module.LdapLoginModule достаточно; com.foo.SmartcardLoginModule Requisite; com.sun.security.auth.module.UnixLoginModule required debug = true; }
Интерфейс приложения

Для разработчика приложения JAAS - это стандартная библиотека, которая предоставляет:

  • представление удостоверения (Принципал ) и набор учетных данных ( Subject )
  • a login сервис, который будет вызывать ваше приложение обратные вызовы, чтобы запросить у пользователя такие вещи, как имя пользователя и пароль. Он возвращает новый Subject
  • служба, которая проверяет, было ли Субъекту предоставлено разрешение администратором.
Интеграция системы безопасности

Для интегратора системы безопасности JAAS предоставляет интерфейсы:

  • для предоставления пространства имен вашей личности приложениям
  • для прикрепления учетных данных к потокам (Тема)
  • для разработки модулей входа. Ваш модуль вызывает обратные вызовы для запроса пользователя, проверяет его ответ и генерирует Тема.
Модули входа в систему

Модули входа в систему в первую очередь связаны с аутентификацией, а не авторизацией и образуют широко используемый компонент JAAS. Модуль входа требуется для реализации javax.security.auth.spi.LoginModuleинтерфейс, который определяет следующие методы:

Примечание: Subject- это пользователь, который пытается войти в систему.

  • initialize: Код для инициализации модуля входа в систему, обычно путем сохранения параметров, переданных в соответствующие поля Class.
  • login: Фактически проверьте учетные данные, предоставленные через Objectкоторый реализует интерфейс javax.security.auth.Callback(например, проверить по базе данных). Этот метод может запрашивать у пользователя логин и пароль или использовать ранее полученные данные. Здесь важно отметить, что если предоставлены недопустимые учетные данные, то должно быть сгенерировано исключение javax.security.auth.login.FailedLoginException(вместо того, чтобы возвращать false, что указывает на то, что этот модуль входа в систему следует игнорировать, что потенциально позволяет пройти аутентификацию).
  • commit: Идентификационные данные субъекта были проверены, поэтому код в этом методе устанавливает Principalи Groups(роли) для успешно аутентифицированного субъекта. Этот метод должен быть тщательно написан в корпоративных приложениях, поскольку серверы приложений Java EE часто ожидают, что отношения между объектами Principalи Groupбудут установлены определенным образом. Этот метод должен генерировать javax.security.auth.login.FailedLoginException, если аутентификация не удалась (например, пользователь указал неверный логин или пароль).
  • abort: Вызывается, если сам процесс аутентификации терпит неудачу. Если этот метод возвращает false, то этот модуль входа в систему игнорируется.
  • выход из системы: Код, который должен выполняться при выходе из системы (например, может удалить принципалаиз Subjectили может сделать веб-сеанс недействительным).

Модули входа в систему могут обеспечивать единый вход (SSO) через определенный протокол / структуру SSO (например, SAML, OpenID и SPNEGO ), может проверять наличие аппаратных токенов безопасности (например, USB-токен) и т. Д. В многоуровневом приложении LoginModulesможет присутствовать как на стороне клиента, так и на стороне сервера.

LoginModule (javax.security.auth.spi.LoginModule)

Модули входа в систему написаны путем реализации этого интерфейса; они содержат фактический код для аутентификации. Он может использовать различные механизмы для аутентификации учетных данных пользователя. Код может получить пароль из базы данных и сравнить его с паролем, предоставленным модулю.

LoginContext (javax.security.auth.login.LoginContext)

Контекст входа в систему является ядром структура JAAS, которая запускает процесс аутентификации с создания субъекта. По мере выполнения процесса аутентификации субъект заполняется различными участниками и учетными данными для дальнейшей обработки.

Тема (javax.security.auth. Субъект)

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

Принципал (java.security.Principal)

Принципал представляет лицо предмет. Он инкапсулирует особенности или свойства предмета. Тема может содержать несколько p rincipals.

Учетные данные

Учетные данные - это не что иное, как фрагменты информации о рассматриваемом предмете. Это могут быть номера учетных записей, пароли, сертификаты и т. Д. Поскольку учетные данные представляют некоторую важную информацию, дополнительные интерфейсы могут быть полезны для создания правильных и безопасных учетных данных - javax.security.auth.Destroyableи javax.security.auth.Refreshable. Предположим, что после успешной аутентификации пользователя вы заполняете субъект секретным идентификатором (в форме учетных данных), с помощью которого субъект может выполнять некоторые важные службы, но учетные данные должны быть удалены через определенное время. В этом случае можно было бы реализовать интерфейс Destroyable. Обновляемыйможет быть полезен, если учетные данные имеют только ограниченный период времени, в течение которого они действительны.

Аутентификация с помощью формы

Аутентификация с помощью формы - еще одна часто используемая часть JAAS. В этом процессе пользователю обычно предоставляется веб-страница, содержащая форму с запросом имени пользователя и пароля. Затем эти данные отправляются через POST на URL-адрес, содержащий текст j_security_check, например. www.example.com/j_security_check. Учетные данные проверяются на стороне сервера, и идентификатор сеанса возвращается клиенту через cookie. Этот метод аутентификации является гибким в том смысле, что HTTP-клиент Java, такой как HTTP-клиент Apache, может использоваться вместо веб-браузера, например. в настольном приложении, если выполняются следующие стандартные шаги:

  • Запросить защищенный URL (т.е. защищенный с помощью элемента ограничения безопасности) в web.xml(где элемент login-config имеет указан метод аутентификации "FORM").
  • Сервер вернет перенаправление (302) на URL-адрес проверки безопасности, упомянутый выше, вместе с файлом cookie, содержащим идентификатор сеанса (JSESSIONID =...).
  • Отправьте имя пользователя и пароль (закодированные как поля формы) вместе с файлом cookie через HTTP POST на URL-адрес проверки безопасности.
  • Если аутентификация прошла успешно, сервер отправит 302 обратно на исходный защищенный URL.
  • Отправить запрос GET на этот URL, передав cookie идентификатора сеанса (желательно подтвердить, что ответ содержит то, что вы ожидаете от этого исходного URL-адреса).

К описанному выше процессу можно добавить дополнительные утверждения.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 03:56:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте