Интерфейс 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, который в настоящее время проходит аутентификацию, и обновляется соответствующими учетными данными, если аутентификация успешна. 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() |
Метод для аутентификации |
boolean |
logout() |
Метод, который выполняет выход из системы |
Методы
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.
Реализация этого метода может удалить/уничтожить участников и учетные данные Subject.
- Возвращает:
- true, если этот метод выполнился успешно, или false, если этот
LoginModuleдолжен быть пропущен. - Исключения:
-
LoginException- если выход из системы не удался
© 1993, 2020, 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/11/docs/api/java.base/javax/security/auth/spi/LoginModule.html