Spec-Zone.ru › OpenJDK 8

Класс LoginContext

  • java.lang.Object
    • javax.security.auth.login.LoginContext

public class LoginContext
extends Object

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

Помимо поддержки подключаемых модулей аутентификации, этот класс также поддерживает понятие стековой аутентификации. Приложения могут быть сконфигурированы для использования более чем одного модуля аутентификации. Например, можно сконфигурировать как модуль аутентификации Kerberos, так и модуль аутентификации смарт-карты в приложении.

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

После того, как вызывающий код создал экземпляр LoginContext, он вызывает метод login для аутентификации Subject. Метод login вызывает сконфигурированные модули для выполнения соответствующих типов аутентификации (имя пользователя/пароль, проверка PIN смарт-карты и т.д.). Обратите внимание, что модули аутентификации не будут пытаться повторить аутентификацию ни вводить задержки в случае неудачи аутентификации. Такие задачи относятся к вызывающему коду LoginContext.

Если метод login возвращается без исключения, то общая аутентификация прошла успешно. Затем вызывающий код может получить аутентифицированный субъект, вызвав метод getSubject. Принципы и данные, связанные с субъектом, можно получить, вызвав соответствующие методы субъекта: getPrincipals, getPublicCredentials, и getPrivateCredentials.

Чтобы выйти из системы субъекта, вызывающий код вызывает метод logout. Как и в случае с методом login, этот метод logout вызывает метод logout для сконфигурированных модулей.

LoginContext не следует использовать для аутентификации более чем одного субъекта. Для аутентификации каждого разного субъекта должен использоваться отдельный LoginContext.

Следующая документация относится ко всем конструкторам LoginContext:

  1. Subject
    • Если конструктор имеет параметр Subject, LoginContext использует объект Subject, указанный вызывающим кодом.
    • Если вызывающий код указывает субъект null и разрешено значение null, LoginContext создает новый субъект.
    • Если конструктор не имеет параметра Subject, LoginContext создает новый субъект.
  2. Configuration
    • Если конструктор имеет параметр Configuration, и вызывающий код указывает непустую Configuration, LoginContext использует указанную вызывающим кодом Configuration.

      Если конструктор не имеет параметра Configuration, или вызывающий код указывает объект Configuration null, конструктор использует следующий вызов для получения установленной Configuration:

      config = Configuration.getConfiguration();
      В обоих случаях аргумент name, переданный в конструктор, передается методу Configuration.getAppConfigurationEntry. Если в Configuration нет записей для заданного имени, то LoginContext вызывает getAppConfigurationEntry с именем "other" (имя по умолчанию). Если нет записи для "other", то генерируется исключение LoginException.
    • Когда LoginContext использует установленную Configuration, вызывающему коду требуются createLoginContext.name и, возможно, createLoginContext.other AuthPermissions. Кроме того, LoginContext будет вызывать сконфигурированные модули внутри вызова AccessController.doPrivileged, поэтому модули, выполняющие задачи, связанные с безопасностью (например, подключение к удаленным хостам и обновление Subject), будут требовать соответствующих разрешений, но вызывающие кода LoginContext не потребуют этих разрешений.
    • Когда LoginContext использует указанную вызывающим кодом Configuration, вызывающему коду не требуются какие-либо разрешения createLoginContext AuthPermission. LoginContext сохраняет AccessControlContext для вызывающего кода и вызывает сконфигурированные модули внутри вызова AccessController.doPrivileged с ограничениями на основе этого контекста. Это означает, что контекст вызывающего кода (сохраненный при создании LoginContext) должен иметь достаточные права для выполнения любых задач, связанных с безопасностью, которые могут выполнить модули.
  3. CallbackHandler
    • Если конструктор имеет параметр CallbackHandler, LoginContext использует объект CallbackHandler, указанный вызывающим кодом.
    • Если конструктор не имеет параметра CallbackHandler, или вызывающий код указывает объект CallbackHandler null (и разрешено значение null), LoginContext запрашивает свойство безопасности auth.login.defaultCallbackHandler для получения полного имени класса реализации обработчика по умолчанию. Если свойство безопасности не задано, то подлежащие модули не будут иметь CallbackHandler для взаимодействия с пользователями. Таким образом, вызывающий код предполагает, что сконфигурированные модули имеют альтернативные средства для аутентификации пользователя.
    • Когда LoginContext использует установленную Configuration (вместо указанной вызывающим кодом, см. выше), то этот LoginContext должен обернуть любой указанный вызывающим кодом или обработчик по умолчанию в новую реализацию CallbackHandler, чья реализация метода handle вызывает метод handle указанного CallbackHandler внутри вызова java.security.AccessController.doPrivileged с ограничениями на основе текущего AccessControlContext вызывающего кода.
См. также:
Security, AuthPermission, Subject, CallbackHandler, Configuration, LoginModule, security properties

Конструкторы

Конструктор и описание
LoginContext(String name)

Создает новый объект LoginContext с именем.

LoginContext(String name, CallbackHandler callbackHandler)

Создает новый объект LoginContext с именем и объектом CallbackHandler.

LoginContext(String name, Subject subject)

Создает новый объект LoginContext с именем и объектом Subject.

LoginContext(String name, Subject subject, CallbackHandler callbackHandler)

Создает новый объект LoginContext с именем, объектом Subject для аутентификации и объектом CallbackHandler.

LoginContext(String name, Subject subject, CallbackHandler callbackHandler, Configuration config)

Создает новый объект LoginContext с именем, объектом Subject для аутентификации, объектом CallbackHandler и обработчиком входа Configuration.

Методы

Модификатор и тип Метод и описание
Subject getSubject()

Возвращает аутентифицированный субъект.

void login()

Выполняет аутентификацию.

void logout()

Выходит из системы Subject.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

LoginContext

public LoginContext(String name)
             throws LoginException

Создайте новый объект LoginContext с именем.

Параметры:
name - имя, используемое в качестве индекса в Configuration.
Исключения:
LoginException - если указанное вызывающим кодом имя name не найдено в Configuration и нет записи Configuration для "other", или если свойство безопасности auth.login.defaultCallbackHandler было установлено, но класс реализации не удалось загрузить.
SecurityException - если установлен SecurityManager и вызывающий код не имеет разрешения AuthPermission("createLoginContext.name"), или если запись конфигурации для name не существует, и вызывающий код не имеет дополнительного разрешения AuthPermission("createLoginContext.other")

LoginContext

public LoginContext(String name,
                    Subject subject)
             throws LoginException

Создайте новый объект LoginContext с именем и объектом Subject.

Параметры:
name - имя, используемое в качестве индекса в Configuration.
subject - объект Subject для аутентификации.
Исключения:
LoginException - если указанное вызывающим кодом имя name не найдено в Configuration и нет записи Configuration для "other", если указанный вызывающим кодом объект subject является null, или если свойство безопасности auth.login.defaultCallbackHandler было установлено, но класс реализации не удалось загрузить.
SecurityException - если установлен SecurityManager и вызывающий код не имеет разрешения AuthPermission("createLoginContext.name"), или если запись конфигурации для name не существует, и вызывающий код не имеет дополнительного разрешения AuthPermission("createLoginContext.other")

LoginContext

public LoginContext(String name,
                    CallbackHandler callbackHandler)
             throws LoginException

Создайте новый объект LoginContext с именем и объектом CallbackHandler.

Параметры:
name - имя, используемое в качестве индекса в Configuration.
callbackHandler - объект CallbackHandler , используемый LoginModules для взаимодействия с пользователем.
Исключения:
LoginException - если указанное вызывающим кодом имя name не найдено в Configuration и нет записи Configuration для "other", или если указанный вызывающим кодом объект callbackHandler является null.
SecurityException - если установлен SecurityManager и вызывающий код не имеет разрешения AuthPermission("createLoginContext.name"), или если запись конфигурации для name не существует, и вызывающий код не имеет дополнительного разрешения AuthPermission("createLoginContext.other")

LoginContext

public LoginContext(String name,
                    Subject subject,
                    CallbackHandler callbackHandler)
             throws LoginException

Создайте новый объект LoginContext с именем, объектом Subject для аутентификации и объектом CallbackHandler.

Параметры:
name - имя, используемое в качестве индекса в Configuration.
subject - объект Subject для аутентификации.
callbackHandler - объект CallbackHandler , используемый LoginModules для взаимодействия с пользователем.
Исключения:
LoginException - если указанное вызывающим кодом имя name не найдено в Configuration и нет записи Configuration для "other", или если указанный вызывающим кодом объект subject является null, или если указанный вызывающим кодом объект callbackHandler является null.
SecurityException - если установлен SecurityManager и вызывающий код не имеет разрешения AuthPermission("createLoginContext.name"), или если запись конфигурации для name не существует, и вызывающий код не имеет дополнительного разрешения AuthPermission("createLoginContext.other")

LoginContext

public LoginContext(String name,
                    Subject subject,
                    CallbackHandler callbackHandler,
                    Configuration config)
             throws LoginException

Создайте новый объект LoginContext с именем, объектом Subject для аутентификации, объектом CallbackHandler и конфигурацией входа Configuration.

Параметры:
name - имя, используемое в качестве индекса в указанной вызывающим кодом Configuration.
subject - объект Subject для аутентификации или null.
callbackHandler - объект CallbackHandler , используемый LoginModules для взаимодействия с пользователем, или null.
config - объект Configuration , содержащий список модулей входа, которые должны быть вызваны для выполнения аутентификации, или null.
Исключения:
LoginException - если указанное вызывающим кодом имя name не найдено в Configuration и нет записи Configuration для "other".
SecurityException - если установлен SecurityManager, config имеет значение null, и вызывающий код не имеет разрешения AuthPermission("createLoginContext.name"), или если запись конфигурации для name не существует, и вызывающий код не имеет дополнительного разрешения AuthPermission("createLoginContext.other")
С момента:
1.5

Методы

login

public void login()
           throws LoginException

Выполнить аутентификацию.

Этот метод вызывает метод login для каждого модуля LoginModule, настроенного для name, указанного в конструкторе LoginContext, как определено в конфигурации входа Configuration. Каждый LoginModule затем выполняет свой тип аутентификации (имя пользователя/пароль, проверка PIN-кода смарт-карты и т. д.).

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

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

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

В случае, когда несколько модулей LoginModule завершаются неудачно, этот метод распространяет исключение, сгенерированное первым LoginModule , который завершился неудачно.

Обратите внимание, что если этот метод переходит к фазе abort (либо фаза login, либо фаза commit завершилась неудачно), этот метод вызывает все настроенные для приложения модули LoginModule независимо от их параметров флагов Configuration. По сути, это означает, что семантика Requisite и Sufficient игнорируются во время фазы abort. Это гарантирует, что может произойти правильная очистка и восстановление состояния.

Исключения:
LoginException - если аутентификация завершается неудачно.

logout

public void logout()
            throws LoginException

Выйти из Subject.

Этот метод вызывает метод logout для каждого LoginModule , настроенного для этого LoginContext. Каждый LoginModule выполняет свою процедуру выхода, которая может включать удаление/уничтожение Principal и Credential информации из Subject и очистку состояния.

Обратите внимание, что этот метод вызывает все настроенные для приложения модули LoginModule независимо от параметров флагов Configuration. По сути, это означает, что семантика Requisite и Sufficient игнорируется для этого метода. Это гарантирует, что может произойти правильная очистка и восстановление состояния.

Исключения:
LoginException - если выход завершается неудачно.

getSubject

public Subject getSubject()

Возвращает аутентифицированный объект Subject.

Возвращает:
аутентифицированный объект Subject. Если вызывающий код указал объект Subject в конструкторе этого LoginContext, этот метод возвращает указанный вызывающим кодом объект Subject. Если объект Subject не был указан и аутентификация прошла успешно, этот метод возвращает объект Subject, созданный и используемый для аутентификации этим LoginContext. Если объект Subject не был указан, и аутентификация завершается неудачно или еще не была выполнена, этот метод возвращает null.

© 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