Spec-Zone .ru
спецификации, руководства, описания, API
|
public class LoginContext extends Object
LoginContext
класс описывает основные методы, используемые, чтобы аутентифицировать Предметы, и обеспечивает способ разработать не зависящую от приложения из базовой технологии аутентификации. A Configuration
определяет технологию аутентификации, или LoginModule
, использоваться с определенным приложением. Различный LoginModules может быть включен в соответствии с приложением, не требуя никаких модификаций к приложению непосредственно.
В дополнение к поддержке сменной аутентификации этот класс также поддерживает понятие сложенной аутентификации. Приложения могут быть сконфигурированы, чтобы использовать больше чем один LoginModule. Например, можно было сконфигурировать и Kerberos LoginModule и смарт-карту LoginModule в соответствии с приложением.
Типичная вызывающая сторона инстанцирует LoginContext с именем и a CallbackHandler
. LoginContext использует имя в качестве индекса в Конфигурацию, чтобы определить, который LoginModules должен использоваться, и которые должны успешно выполниться для полной аутентификации, чтобы успешно выполниться. CallbackHandler
передается к базовому LoginModules, таким образом, они могут связаться и взаимодействовать с пользователями (запрашивающий имя пользователя и пароль через графический интерфейс пользователя, например).
Как только вызывающая сторона инстанцировала LoginContext, она вызывает login
метод, чтобы аутентифицировать a Subject
. login
метод вызывает сконфигурированные модули, чтобы выполнить их соответствующие типы аутентификации (имя пользователя/пароль, проверка контакта смарт-карты, и т.д.). Отметьте, что LoginModules не будет делать попытку повторений аутентификации, ни представлять задержки, если аутентификация перестанет работать. Такие задачи принадлежат вызывающей стороне LoginContext.
Если login
возвраты метода, не выдавая исключение, тогда полная аутентификация успешно выполнялись. Вызывающая сторона может тогда получить недавно аутентифицируемый Предмет, вызывая getSubject
метод. Принципалы и Учетные данные, связанные с Предметом, могут быть получены, вызывая соответствующий Предмет getPrincipals
, getPublicCredentials
, и getPrivateCredentials
методы.
Чтобы выйти из системы Предмет, вызывающая сторона вызывает logout
метод. Как с login
метод, это logout
метод вызывает logout
метод для сконфигурированных модулей.
LoginContext не должен использоваться, чтобы аутентифицировать больше чем один Предмет. Отдельный LoginContext должен использоваться, чтобы аутентифицировать каждый различный Предмет.
Следующая документация применяется ко всем конструкторам LoginContext:
Subject
null
Предмет и a null
значение разрешается, LoginContext инстанцирует нового Предмета.
Configuration
Если у конструктора нет входного параметра Конфигурации, или если вызывающая сторона определяет a null
Объект конфигурации, конструктор использует следующий вызов, чтобы получить установленную Конфигурацию:
config = Configuration.getConfiguration();Для обоих случаев параметр имени, данный конструктору, передают к
Configuration.getAppConfigurationEntry
метод. Если у Конфигурации нет никаких записей для указанного имени, то LoginContext
вызовы getAppConfigurationEntry
с именем, "другой" (имя записи по умолчанию). Если нет никакой записи для "другого", то a LoginException
бросается.
AccessController.doPrivileged
вызовите так, чтобы модули, которые выполняют чувствительные к безопасности задачи (такие как соединение, чтобы отдалить узлы, и обновление Предмета) потребовали соответствующих полномочий, но вызывающие стороны LoginContext не будут требовать тех полномочий.
AccessControlContext
для вызывающей стороны, и вызывает сконфигурированные модули изнутри вызова AccessController.doPrivileged, ограниченного тем контекстом. Это означает контекст вызывающей стороны (сохраненный, когда LoginContext создавался), должен иметь достаточные полномочия, чтобы выполнить любые чувствительные к безопасности задачи, которые могут выполнить модули.
CallbackHandler
null
Объект CallbackHandler (и a null
значение разрешается), LoginContext запрашивает auth.login.defaultCallbackHandler свойство безопасности для полностью определенного имени класса реализации обработчика по умолчанию. Если свойство безопасности не будет установлено, то у базовых модулей не будет CallbackHandler для использования в передаче с пользователями. Вызывающая сторона таким образом предполагает, что у сконфигурированных модулей есть альтернативные средства для того, чтобы аутентифицировать пользователя.
handle
реализация метода вызывает указанный CallbackHandler handle
метод в a java.security.AccessController.doPrivileged
вызовите ограниченный током вызывающей стороны AccessControlContext
. Отметьте что Свойства Безопасности (такой как auth.login.defaultCallbackHandler
) может быть установлен программно через java.security.Security
класс, или статически в файле свойств безопасности Java, расположенном в файле под названием <JAVA_HOME>/lib/security/java.security. <JAVA_HOME> обращается к значению java.home системного свойства, и определяет каталог, где JRE устанавливается.
Security
, AuthPermission
, Subject
, CallbackHandler
, Configuration
, LoginModule
Конструктор и Описание |
---|
LoginContext(String name)
Инстанцируйте нового
LoginContext объект с именем. |
LoginContext(String name, CallbackHandler callbackHandler)
Инстанцируйте нового
LoginContext объект с именем и a CallbackHandler объект. |
LoginContext(String name, Subject subject)
Инстанцируйте нового
LoginContext объект с именем и a Subject объект. |
LoginContext(String name, Subject subject, CallbackHandler callbackHandler)
Инстанцируйте нового
LoginContext объект с именем, a Subject аутентифицироваться, и a CallbackHandler объект. |
LoginContext(String name, Subject subject, CallbackHandler callbackHandler, Configuration config)
Инстанцируйте нового
LoginContext объект с именем, a Subject аутентифицироваться, a CallbackHandler объект, и вход в систему Configuration . |
Модификатор и Тип | Метод и Описание |
---|---|
Предмет |
getSubject()
Возвратите аутентифицируемый Предмет.
|
void |
login()
Выполните аутентификацию.
|
void |
logout()
Выход из системы
Subject . |
public LoginContext(String name) throws LoginException
LoginContext
объект с именем.name
- имя, используемое в качестве индекса в Configuration
.LoginException
- если определенный вызывающей стороной name
не появляется в Configuration
и есть нет Configuration
запись для "другого", или если auth.login.defaultCallbackHandler свойство безопасности было установлено, но класс реализации, не могла бы быть загружена. SecurityException
- если SecurityManager устанавливается, и у вызывающей стороны нет AuthPermission ("createLoginContext.name"), или если запись конфигурации для имени не существует, и у вызывающей стороны дополнительно нет AuthPermission ("createLoginContext.other")public LoginContext(String name, Subject subject) throws LoginException
LoginContext
объект с именем и a Subject
объект. name
- имя, используемое в качестве индекса в Configuration
. subject
- Subject
аутентифицировать.LoginException
- если определенный вызывающей стороной name
не появляется в Configuration
и есть нет Configuration
запись для "другого", если определенный вызывающей стороной subject
null
, или если auth.login.defaultCallbackHandler свойство безопасности было установлено, но класс реализации не мог бы быть загружен. SecurityException
- если SecurityManager устанавливается, и у вызывающей стороны нет AuthPermission ("createLoginContext.name"), или если запись конфигурации для имени не существует, и у вызывающей стороны дополнительно нет AuthPermission ("createLoginContext.other")public LoginContext(String name, CallbackHandler callbackHandler) throws LoginException
LoginContext
объект с именем и a CallbackHandler
объект. name
- имя, используемое в качестве индекса в Configuration
. callbackHandler
- CallbackHandler
объект, используемый LoginModules, чтобы связаться с пользователем.LoginException
- если определенный вызывающей стороной name
не появляется в Configuration
и есть нет Configuration
запись для "другого", или если определенный вызывающей стороной callbackHandler
null
. SecurityException
- если SecurityManager устанавливается, и у вызывающей стороны нет AuthPermission ("createLoginContext.name"), или если запись конфигурации для имени не существует, и у вызывающей стороны дополнительно нет AuthPermission ("createLoginContext.other")public LoginContext(String name, Subject subject, CallbackHandler callbackHandler) throws LoginException
LoginContext
объект с именем, a Subject
аутентифицироваться, и a CallbackHandler
объект. name
- имя, используемое в качестве индекса в Configuration
. subject
- Subject
аутентифицировать. callbackHandler
- CallbackHandler
объект, используемый LoginModules, чтобы связаться с пользователем.LoginException
- если определенный вызывающей стороной name
не появляется в Configuration
и есть нет Configuration
запись для "другого", или если определенный вызывающей стороной subject
null
, или если определенный вызывающей стороной callbackHandler
null
. SecurityException
- если SecurityManager устанавливается, и у вызывающей стороны нет AuthPermission ("createLoginContext.name"), или если запись конфигурации для имени не существует, и у вызывающей стороны дополнительно нет AuthPermission ("createLoginContext.other")public LoginContext(String name, Subject subject, CallbackHandler callbackHandler, Configuration config) throws LoginException
LoginContext
объект с именем, a Subject
аутентифицироваться, a CallbackHandler
объект, и вход в систему Configuration
. name
- имя, используемое в качестве индекса в определенный вызывающей стороной Configuration
. subject
- Subject
аутентифицировать, или null
. callbackHandler
- CallbackHandler
объект, используемый LoginModules, чтобы связаться с пользователем, или null
. config
- Configuration
это перечисляет модули входа в систему, которые вызовут, чтобы выполнить аутентификацию, или null
.LoginException
- если определенный вызывающей стороной name
не появляется в Configuration
и есть нет Configuration
запись для "другого". SecurityException
- если SecurityManager устанавливается, конфигурация null
, и у или вызывающей стороны нет AuthPermission ("createLoginContext.name"), или если запись конфигурации для имени не существует, и у вызывающей стороны дополнительно нет AuthPermission ("createLoginContext.other")public void login() throws LoginException
Этот метод вызывает login
метод для каждого LoginModule, сконфигурированного для имени, определенного к LoginContext
конструктор, как определено входом в систему Configuration
. Каждый LoginModule
тогда выполняет его соответствующий тип аутентификации (имя пользователя/пароль, проверка контакта смарт-карты, и т.д.).
Этот метод завершается, 2-фазовый процесс аутентификации, вызывая каждого сконфигурировал LoginModule commit
метод, если полная аутентификация, за которой следуют (соответствующий ТРЕБУЕМЫЙ, НЕОБХОДИМЫЙ, ДОСТАТОЧНЫЙ, и ДОПОЛНИТЕЛЬНЫЙ LoginModules успешно выполнялся), или вызывая каждого, сконфигурировала LoginModule abort
метод, если полная аутентификация перестала работать. Если аутентификация успешно выполнялась, каждый успешный LoginModule commit
метод связывает соответствующие Принципалы и Учетные данные с Subject
. Если аутентификация перестала работать, каждый LoginModule abort
метод, removes/destroys любое ранее сохраненное состояние.
Если commit
фаза сбоев процесса аутентификации, тогда полные сбои аутентификации и этот метод вызывает abort
метод для каждого сконфигурированного LoginModule
.
Если abort
фазовые сбои по любой причине, тогда этот метод распространяет исходное исключение, выданное любой во время login
фаза или commit
фаза. В любом случае, полных сбоях аутентификации.
В случае, где многократные LoginModules перестали работать, этот метод распространяет исключение, повышенное первым LoginModule
который отказавший.
Отметьте это, если этот метод входит abort
фаза (любой login
или commit
отказавшая фаза), этот метод вызывает весь LoginModules, сконфигурированный для приложения независимо от их соответствующего Configuration
флаговые параметры. По существу это означает это Requisite
и Sufficient
семантика игнорируется во время abort
фаза. Это гарантирует, что надлежащая уборка и восстановление состояния могут иметь место.
LoginException
- если аутентификация перестала работать.public void logout() throws LoginException
Subject
. Этот метод вызывает logout
метод для каждого LoginModule
сконфигурированный для этого LoginContext
. Каждый LoginModule
выполняет его соответствующую процедуру выхода из системы, которая может включать удаление/уничтожение Principal
и Credential
информация от Subject
и уборка состояния.
Отметьте, что этот метод вызывает весь LoginModules, сконфигурированный для приложения независимо от их соответствующего Configuration
флаговые параметры. По существу это означает это Requisite
и Sufficient
семантика игнорируется для этого метода. Это гарантирует, что надлежащая уборка и восстановление состояния могут иметь место.
LoginException
- если выход из системы перестал работать.public Subject getSubject()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.