Spec-Zone .ru
спецификации, руководства, описания, API
|
public class LdapLoginModule extends Object implements LoginModule
LoginModule
выполняет LDAP-на-основе аутентификацию. Имя пользователя и пароль проверяются против соответствующих удостоверений пользователя, сохраненных в каталоге LDAP. Этот модуль требует предоставленного CallbackHandler
поддерживать a NameCallback
и a PasswordCallback
. Если аутентификация успешна тогда новое LdapPrincipal
создается, используя отличительное имя пользователя и новое UserPrincipal
создается, используя имя пользователя пользователя, и оба связываются с током Subject
. Этот модуль работает в одном из трех режимов: ищите сначала, аутентификация, первая или только для аутентификации. Режим выбирается, определяя определенный набор опций.
В поисковом первом режиме каталог LDAP ищется, чтобы определить отличительное имя пользователя, и затем аутентификация предпринимается. (Анонимный) поиск выполняется, используя предоставленное имя пользователя в соединении с указанным поисковым фильтром. В случае успеха тогда аутентификация предпринимается, используя отличительное имя пользователя и предоставленный пароль. Чтобы включить этому режиму, установите userFilter
опция и опускает authIdentity
опция. Используйте поисковый первый режим, когда отличительное имя пользователя не известно заранее.
В аутентификации первый режим аутентификация предпринимается, используя предоставленное имя пользователя и пароль, и затем каталог LDAP ищется. Если аутентификация успешна тогда, поиск выполняется, используя предоставленное имя пользователя в соединении с указанным поисковым фильтром. Чтобы включить этому режиму, установите authIdentity
и userFilter
опции. Используйте аутентификацию первый режим, получая доступ к каталогу LDAP, который был сконфигурирован, чтобы отвергнуть анонимные поиски.
В режиме только для аутентификации аутентификация предпринимается, используя предоставленное имя пользователя и пароль. Каталог LDAP не ищется, потому что отличительное имя пользователя уже известно. Чтобы включить этому режиму, установите authIdentity
опция к допустимому отличительному имени и опускает userFilter
опция. Используйте режим только для аутентификации, когда отличительное имя пользователя известно заранее.
Следующая опция обязательна и должна быть определена во входе в систему этого модуля Configuration
:
userProvider=ldap_urls
%
') сопровождаемый двумя шестнадцатеричными цифрами (см. URI
). Компоненты запроса должны также быть опущены от URL. Автоматическое открытие сервера LDAP через DNS
Этот модуль также распознает следующее дополнительное Configuration
опции:
userFilter=ldap_filter
ldap_filter
строка фильтра LDAP {USERNAME}
"тогда тот маркер будет заменен предоставленным значением имени пользователя прежде, чем фильтр будет использоваться, чтобы искать каталог. authIdentity=auth_id
auth_id
может быть строка отличительного имени LDAP {USERNAME}
"который будет заменен предоставленным значением имени пользователя прежде, чем имя будет использоваться для аутентификации. Отметьте это, если эта опция не содержит отличительное имя тогда userFilter
опция должна также быть определена. authzIdentity=authz_id
authz_id
любое имя строки. Если это включает единственный специальный маркер с изогнутыми фигурными скобками тогда, что маркер обрабатывается как название атрибута и будет заменен единственным значением того атрибута от записи пользователя LDAP. Если атрибут не может быть найден тогда, опция игнорируется. Когда эта опция предоставляется, и пользователь успешно аутентифицировался тогда дополнительное UserPrincipal
создается, используя идентификационные данные авторизации, и это - assocated с током Subject
. useSSL
false
, этот модуль не устанавливает соединение SSL с сервером LDAP перед деланием попытку аутентификации. SSL используется, чтобы защитить конфиденциальность пароля пользователя, потому что это передается в четком по LDAP. По умолчанию этот модуль использует SSL. useFirstPass
true
, этот модуль получает имя пользователя и пароль от общего состояния модуля, используя "javax.security.auth.login.name" и "javax.security.auth.login.password" как соответствующие ключи. Полученные значения используются для аутентификации. Если аутентификация перестала работать, никакая попытка для повторной попытки не предпринимается, и отказ отчитывается к вызывающему приложению.tryFirstPass
true
, этот модуль получает имя пользователя и пароль от общего состояния модуля, используя "javax.security.auth.login.name" и "javax.security.auth.login.password" как соответствующие ключи. Полученные значения используются для аутентификации. Если аутентификация перестала работать, модуль использует CallbackHandler
получать новое имя пользователя и пароль, и другую попытку аутентифицировать делается. Если аутентификация перестала работать, отказ отчитывается к вызывающему приложению.storePass
true
, этот модуль хранит имя пользователя и пароль, полученный из CallbackHandler
в общем состоянии модуля, используя "javax.security.auth.login.name" и "javax.security.auth.login.password" как соответствующие ключи. Это не выполняется, если существующие значения уже существуют для имени пользователя и пароля в общем состоянии, или если аутентификация перестала работать.clearPass
true
, этот модуль очищает имя пользователя и пароль, сохраненный в общем состоянии модуля после того, как обе фазы аутентификации (вход в систему и фиксация) завершились.debug
true
, сообщения отладки выводятся на экран на потоке стандартного вывода. Произвольные свойства JNDI могут также быть определены в Configuration
. Они добавляются к среде и передаются к провайдеру LDAP. Отметьте, что следующие четыре свойства JNDI устанавливаются этим модулем непосредственно и игнорируются если также существующий в конфигурации:
java.naming.provider.url
java.naming.security.principal
java.naming.security.credentials
java.naming.security.protocol
Три выборки Configuration
s показывают ниже. Первый активирует поисковый первый режим. Это идентифицирует сервер LDAP и определяет что записи пользователей быть расположенным их uid
и objectClass
атрибуты. Это также определяет что идентификационные данные, основанные на пользователе employeeNumber
атрибут должен быть создан. Второй активирует аутентификацию первый режим. Это запрашивает, чтобы сервер LDAP был расположен динамически, что аутентификация быть выполненным, используя предоставленное имя пользователя непосредственно, но без защиты SSL и что записи пользователей быть расположенным одним из трех атрибутов именования и их objectClass
атрибут. Третий активирует режим только для аутентификации. Это идентифицирует альтернативные серверы LDAP, это определяет отличительное имя, чтобы использовать для аутентификации и фиксированных идентификационных данных, чтобы использовать для авторизации. Никакой поиск каталога не выполняется.
ExampleApplication { com.sun.security.auth.module.LdapLoginModule REQUIRED userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com" userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))" authzIdentity="{EMPLOYEENUMBER}" debug=true; }; ExampleApplication { com.sun.security.auth.module.LdapLoginModule REQUIRED userProvider="ldap:///cn=users,dc=example,dc=com" authIdentity="{USERNAME}" userFilter="(&(|(samAccountName={USERNAME})(userPrincipalName={USERNAME})(cn={USERNAME}))(objectClass=user))" useSSL=false debug=true; }; ExampleApplication { com.sun.security.auth.module.LdapLoginModule REQUIRED userProvider="ldap://ldap-svr1 ldap://ldap-svr2" authIdentity="cn={USERNAME},ou=people,dc=example,dc=com" authzIdentity="staff" debug=true; };
SecurityManager
является активным тогда приложение, которое создает a LoginContext
и использование a LoginModule
должен быть предоставлен определенные полномочия. Если приложение создает контекст входа в систему, используя установленный
Configuration
тогда ходатайство должно быть удовлетворено AuthPermission
создать контексты входа в систему. Например, следующая политика безопасности позволяет приложению в текущем каталоге пользователя инстанцировать любого контекста входа в систему:
grant codebase "file:${user.dir}/" { permission javax.security.auth.AuthPermission "createLoginContext.*"; };Альтернативно, если приложение создает контекст входа в систему, используя определенный вызывающей стороной
Configuration
тогда ходатайство должно быть удовлетворено полномочия, требуемые LoginModule
. Этот модуль требует следующих двух полномочий:
SocketPermission
соединяться с сервером LDAP. AuthPermission
изменить набор Principal
s связанный с a Subject
. Например, следующая политика безопасности удовлетворяет ходатайство в текущем каталоге пользователя все полномочия, требуемые этим модулем:
grant codebase "file:${user.dir}/" { permission java.net.SocketPermission "*:389", "connect"; permission java.net.SocketPermission "*:636", "connect"; permission javax.security.auth.AuthPermission "modifyPrincipals"; };
Конструктор и Описание |
---|
LdapLoginModule() |
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
abort()
Прервите пользовательскую аутентификацию.
|
boolean |
commit()
Завершите пользовательскую аутентификацию.
|
void |
initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
Инициализируйте это
LoginModule . |
boolean |
login()
Начните пользовательскую аутентификацию.
|
boolean |
logout()
Выход из системы пользователь.
|
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
LoginModule
.initialize
в интерфейсе LoginModule
subject
- Subject
аутентифицироваться.callbackHandler
- a CallbackHandler
получать имя пользователя и пароль.sharedState
- совместно используемый LoginModule
состояние.options
- опции определяются во входе в систему Configuration
для этой детали LoginModule
.public boolean login() throws LoginException
Получите учетные данные пользователя и проверьте их против указанного каталога LDAP.
login
в интерфейсе LoginModule
LoginModule
не должен быть проигнорирован.FailedLoginException
- если аутентификация перестала работать.LoginException
- если это LoginModule
неспособно выполнить аутентификацию.public boolean commit() throws LoginException
Этот метод вызывают если полная аутентификация LoginContext, за которой следуют (соответствующий НЕОБХОДИМЫЙ, НЕОБХОДИМЫЙ, ДОСТАТОЧНЫЙ и ДОПОЛНИТЕЛЬНЫЙ LoginModules, за которым следуют).
Если собственная попытка аутентификации этого LoginModule, за которой следуют (проверенное получение частного состояния, сохраненного login
метод), тогда этот метод связывается LdapPrincipal
и один или больше UserPrincipal
s с Subject
расположенный в LoginModule
. Если собственная аутентификация этого LoginModule, предпринятая отказавший, то этот метод удаляет любое состояние, которое было первоначально сохранено.
commit
в интерфейсе LoginModule
LoginException
- если фиксация перестала работатьpublic boolean abort() throws LoginException
Этот метод вызывают если полная отказавшая аутентификация. (соответствующий НЕОБХОДИМЫЙ, НЕОБХОДИМЫЙ, ДОСТАТОЧНЫЙ и ДОПОЛНИТЕЛЬНЫЙ LoginModules не успешно выполнялся).
Если собственная попытка аутентификации этого LoginModule, за которой следуют (проверенное получение частного состояния, сохраненного login
и commit
методы), тогда этот метод очищает любое состояние, которое было первоначально сохранено.
abort
в интерфейсе LoginModule
LoginException
- если аварийное прекращение работы перестало работать.public boolean logout() throws LoginException
Этот метод удаляет Принципалы, которые были добавлены commit
метод.
logout
в интерфейсе LoginModule
LoginModule
не должен быть проигнорирован.LoginException
- если выход из системы перестал работать.
Авторское право © 1998, 2011, Oracle и/или его филиалы. Все права защищены.