Spec-Zone.ru › OpenJDK 21

Интерфейс 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 , создать его экземпляр.

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

login

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

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

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

commit

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

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

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

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

abort

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

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

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

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

logout

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

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

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

© 1993, 2023, 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/21/docs/api/java.base/javax/security/auth/spi/LoginModule.html

Spec-Zone.ru

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