Spec-Zone.ru › OpenJDK 25

Интерфейс LoginModule

Все известные реализующие классы:
JndiLoginModule, KeyStoreLoginModule, Krb5LoginModule, LdapLoginModule, NTLoginModule, UnixLoginModule
public interface LoginModule

Интерфейс поставщика службы для поставщиков технологий аутентификации. LoginModule подключаются к приложениям для обеспечения определенного типа аутентификации.

Приложения используют API LoginContext, а поставщики технологий аутентификации реализуют интерфейс LoginModule. Configuration указывает LoginModule, которые следует использовать с конкретным приложением для входа в систему. Таким образом, к приложению можно подключать различные LoginModule, не изменяя само приложение.

LoginContext отвечает за чтение Configuration и создание экземпляров соответствующих LoginModule. Каждый LoginModule инициализируется с помощью Subject, CallbackHandler, общего состояния LoginModule и параметров, специфичных для LoginModule.

Subject представляет Subject, проходящий аутентификацию в данный момент, и при успешной аутентификации обновляется соответствующими учетными данными. LoginModule используют CallbackHandler для взаимодействия с пользователями. Например, CallbackHandler можно использовать для запроса имени пользователя и пароля. Обратите внимание, что CallbackHandler может быть null. LoginModule, которым для аутентификации Subject обязательно требуется CallbackHandler, могут выбросить LoginException. LoginModule могут использовать общее состояние для обмена информацией или данными между собой.

Параметры, специфичные для LoginModule, представляют собой параметры, настроенные для этого LoginModule администратором или пользователем в Configuration входа в систему. Параметры определяются самим LoginModule и управляют его поведением. Например, LoginModule может определять параметры для поддержки возможностей отладки и тестирования. Параметры задаются с помощью синтаксиса «ключ-значение», например debug=true. LoginModule сохраняет параметры в виде Map, чтобы значения можно было получить по ключу. Обратите внимание, что количество параметров, которые может определить LoginModule, не ограничено.

Вызывающее приложение воспринимает процесс аутентификации как одну операцию. Однако процесс аутентификации внутри LoginModule проходит в две отдельные фазы. В первой фазе метод login LoginModule вызывается методом login объекта LoginContext. Затем метод login для LoginModule выполняет собственно аутентификацию (например, запрашивает и проверяет пароль) и сохраняет результат аутентификации в виде закрытой информации о состоянии. После завершения метод login LoginModule возвращает true (если аутентификация прошла успешно) или false (если его следует игнорировать), либо выбрасывает LoginException, указывая на ошибку. В случае ошибки LoginModule не должен повторять попытку аутентификации или вводить задержки. Такие задачи относятся к ответственности приложения. Если приложение попытается повторить аутентификацию, метод login LoginModule будет вызван снова.

Во второй фазе, если общая аутентификация LoginContext прошла успешно (соответствующие LoginModule с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL завершились успешно), вызывается метод commit для LoginModule. Метод commit для LoginModule проверяет сохраненное закрытое состояние, чтобы определить, прошла ли его собственная аутентификация успешно. Если общая аутентификация LoginContext и собственная аутентификация LoginModule прошли успешно, метод commit связывает соответствующие Principals (аутентифицированные идентификаторы) и учетные данные (данные аутентификации, например криптографические ключи) с Subject, расположенным в LoginModule.

Если общая аутентификация LoginContext завершилась неудачно (соответствующие LoginModule с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL не завершились успешно), для каждого LoginModule вызывается метод abort. В этом случае LoginModule удаляет или уничтожает все ранее сохраненное состояние аутентификации.

Выход из системы Subject выполняется в одну фазу. LoginContext вызывает метод logout LoginModule. Затем метод logout для LoginModule выполняет процедуры выхода из системы, например удаляет Principals или учетные данные из Subject либо записывает сведения о сеансе.

Реализация LoginModule должна иметь конструктор без аргументов. Это позволяет классам, загружающим LoginModule, создавать его экземпляр.

С момента выпуска:
1.4
См. также:
  • LoginContext
  • Configuration

Краткое описание методов

Модификатор и тип Метод Описание
boolean abort()
Метод для прерывания процесса аутентификации (фаза 2).
boolean commit()
Метод для фиксации процесса аутентификации (фаза 2).
void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
Инициализирует этот LoginModule.
boolean login()
Метод для аутентификации Subject (фаза 1).
boolean logout()
Метод для выхода из системы Subject.

Подробное описание методов

initialize

void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
Инициализирует этот LoginModule.

Этот метод вызывается LoginContext после создания экземпляра этого LoginModule. Цель метода — инициализировать этот LoginModule соответствующей информацией. Если этот LoginModule не распознает какие-либо данные, хранящиеся в параметрах sharedState или options, их можно игнорировать.

Параметры:
subject — Subject, для которого выполняется аутентификация.
callbackHandler — CallbackHandler для взаимодействия с конечным пользователем (например, для запроса имени пользователя и пароля).
sharedState — состояние, общее с другими настроенными LoginModule.
options — параметры, указанные в Configuration входа в систему для данного LoginModule.

login

boolean login() throws LoginException
Метод для аутентификации Subject (фаза 1).

Реализация этого метода выполняет аутентификацию Subject. Например, метод может запросить Subject данные, такие как имя пользователя и пароль, а затем попытаться проверить пароль. Метод сохраняет результат попытки аутентификации в виде закрытого состояния внутри LoginModule.

Возвращает:
true, если аутентификация прошла успешно, или false, если этот LoginModule следует игнорировать.
Выбрасывает:
LoginException — если аутентификация завершилась неудачно

commit

boolean commit() throws LoginException
Метод для фиксации процесса аутентификации (фаза 2).

Этот метод вызывается, если общая аутентификация LoginContext прошла успешно (соответствующие LoginModule с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL завершились успешно).

Если собственная попытка аутентификации этого LoginModule прошла успешно (это проверяется путем получения закрытого состояния, сохраненного методом login), метод связывает соответствующие Principals и учетные данные с Subject, расположенным в LoginModule. Если собственная попытка аутентификации этого LoginModule завершилась неудачно, метод удаляет или уничтожает все ранее сохраненное состояние.

Возвращает:
true, если метод выполнен успешно, или false, если этот LoginModule следует игнорировать.
Выбрасывает:
LoginException — если фиксация завершилась неудачно

abort

boolean abort() throws LoginException
Метод для прерывания процесса аутентификации (фаза 2).

Этот метод вызывается, если общая аутентификация LoginContext завершилась неудачно (соответствующие LoginModule с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL не завершились успешно).

Если собственная попытка аутентификации этого LoginModule прошла успешно (это проверяется путем получения закрытого состояния, сохраненного методом login), метод очищает все ранее сохраненное состояние.

Возвращает:
true, если метод выполнен успешно, или false, если этот LoginModule следует игнорировать.
Выбрасывает:
LoginException — если прерывание завершилось неудачно

logout

boolean logout() throws LoginException
Метод для выхода из системы Subject.

Реализация этого метода может удалять или уничтожать Principals и учетные данные Subject.

Примечание по реализации:
Перед удалением переменной из набора Principals или учетных данных Subject следует проверить, не является ли она null; в противном случае будет выброшено NullPointerException, поскольку эти наборы не допускают элементы null. Это особенно важно, если этот метод вызывается после сбоя входа в систему.
Возвращает:
true, если метод выполнен успешно, или false, если этот LoginModule следует игнорировать.
Выбрасывает:
LoginException — если выход из системы завершился неудачно

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/security/auth/spi/LoginModule.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API