Spec-Zone.ru › OpenJDK 24

Интерфейс LoginModule

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

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

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

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

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

Параметры, специфичные для 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 успешна (соответствующие LoginModules REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL успешны), то вызывается метод commit для LoginModule. Метод commit для LoginModule проверяет свое сохраненное состояние, чтобы увидеть, прошла ли его собственная аутентификация. Если общая аутентификация LoginContext прошла успешно, и собственная аутентификация LoginModule прошла успешно, то метод commit связывает соответствующие принципы (аутентифицированные идентификаторы) и данные аутентификации (данные аутентификации, такие как криптографические ключи) с Subject, расположенным в LoginModule.

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

Выход из системы Subject включает только одну фазу. LoginContext вызывает метод logout LoginModule. Метод logout для LoginModule затем выполняет процедуры выхода из системы, такие как удаление принципов или данных аутентификации из Subject или регистрация сеансовой информации.

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

Since:
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 — состояние, общее для других настроенных модулей входа.
options — параметры, указанные в модуле входа Configuration для данного конкретного LoginModule.

login

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

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

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

commit

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

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

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

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

abort

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

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

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

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

logout

boolean logout() throws LoginException
Метод, который выполняет выход из системы Subject.

Реализация этого метода может удалить/уничтожить субъекты и учетные данные.

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/security/auth/spi/LoginModule.html

Spec-Zone.ru

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