Spec-Zone.ru › OpenJDK 8

Интерфейс LoginModule


public interface LoginModule

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

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

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

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

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

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

См. также:
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. Например, он может запросить информацию, такую как имя пользователя и пароль, а затем попытаться проверить пароль. Этот метод сохраняет результат попытки аутентификации как частное состояние внутри LoginModule.

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

commit

boolean commit()
        throws LoginException

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

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

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

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

abort

boolean abort()
       throws LoginException

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

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

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

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

logout

boolean logout()
        throws LoginException

Метод для выхода из системы Subject.

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

Возвращает:
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.

Spec-Zone.ru

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