Класс JndiLoginModule
- java.lang.Object
- com.sun.security.auth.module.JndiLoginModule
- Все реализуемые интерфейсы:
LoginModule
public class JndiLoginModule extends Object implements LoginModule
Модуль запрашивает имя пользователя и пароль, а затем проверяет пароль по отношению к паролю, хранящемуся в службе каталогов, настроенной в JNDI.
Этот LoginModule взаимодействует с любым совместимым поставщиком услуг JNDI. Чтобы направить этот LoginModule на использование определённого поставщика услуг JNDI, в разделе параметров входа Configuration для этого LoginModule необходимо указать два параметра.
user.provider.url=name_service_url
group.provider.url=name_service_urlname_service_url указывает службу каталогов и путь, где этот LoginModule может получить доступ к соответствующей информации о пользователе и группе. Поскольку этот LoginModule выполняет только поиск в одном уровне, чтобы найти соответствующую информацию о пользователе, URL должен указывать на каталог на уровень выше, где информация о пользователе и группе хранится в службе каталогов. Например, чтобы направить этот LoginModule на обращение к серверу NIS, необходимо указать следующие URL-адреса: user.provider.url="nis://NISServerHostName/NISDomain/user"
group.provider.url="nis://NISServerHostName/NISDomain/system/group" NISServerHostName указывает имя хоста сервера NIS (например, nis.sun.com), а NISDomain указывает домен для этого сервера NIS (например, jaas.sun.com). Чтобы обратиться к серверу LDAP, необходимо указать следующие URL-адреса: user.provider.url="ldap://LDAPServerHostName/LDAPName"
group.provider.url="ldap://LDAPServerHostName/LDAPName" LDAPServerHostName указывает имя хоста сервера LDAP, которое может включать номер порта (например, ldap.sun.com:389), а LDAPName указывает имя записи в каталоге LDAP (например, ou=People,o=Sun,c=US и ou=Groups,o=Sun,c=US для информации о пользователе и группе соответственно). Формат, в котором информация о пользователе должна храниться в службе каталогов, указан в RFC 2307. В частности, этот LoginModule будет искать запись пользователя в службе каталогов, используя атрибут uid пользователя, где uid=имя_пользователя. Если поиск успешен, этот LoginModule получит зашифрованный пароль пользователя из извлечённой записи, используя атрибут userPassword. Этот LoginModule предполагает, что пароль хранится в виде массива байтов, который при преобразовании в String, имеет следующий формат:
"{crypt}encrypted_password" Сервер каталогов LDAP должен быть настроен таким образом, чтобы разрешать чтение атрибута userPassword. Если пользователь ввёл корректное имя пользователя и пароль, этот LoginModule сопоставляет UnixPrincipal, UnixNumericUserPrincipal, и соответствующие UnixNumericGroupPrincipals с Subject. Этот модуль входа также распознаёт следующие Configuration параметры:
debug if, true, debug messages are output to System.out.
useFirstPass if, true, this LoginModule retrieves the
username and password from the module's shared state,
using "javax.security.auth.login.name" and
"javax.security.auth.login.password" as the respective
keys. The retrieved values are used for authentication.
If authentication fails, no attempt for a retry is made,
and the failure is reported back to the calling
application.
tryFirstPass if, true, this LoginModule retrieves the
the username and password from the module's shared state,
using "javax.security.auth.login.name" and
"javax.security.auth.login.password" as the respective
keys. The retrieved values are used for authentication.
If authentication fails, the module uses the
CallbackHandler to retrieve a new username and password,
and another attempt to authenticate is made.
If the authentication fails, the failure is reported
back to the calling application.
storePass if, true, this LoginModule stores the username and password
obtained from the CallbackHandler in the module's
shared state, using "javax.security.auth.login.name" and
"javax.security.auth.login.password" as the respective
keys. This is not performed if existing values already
exist for the username and password in the shared state,
or if authentication fails.
clearPass if, true, this LoginModule clears the
username and password stored in the module's shared state
after both phases of authentication (login and commit)
have completed.Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
String | GROUP_PROVIDER | |
String | USER_PROVIDER | Поставщик JNDI |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JndiLoginModule() |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean | abort() | Этот метод вызывается, если общая аутентификация LoginContext завершилась неудачно. |
boolean | commit() | Абстрактный метод для подтверждения процесса аутентификации (этап 2). |
void | initialize(Subject subject,
CallbackHandler callbackHandler,
Map<String,?> sharedState,
Map<String,?> options) | Инициализация этого |
boolean | login() | Запрос имени пользователя и пароля. |
boolean | logout() | Выход пользователя. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitПодробное описание полей
USER_PROVIDER
public final String USER_PROVIDER
Поставщик JNDI
- См. также:
- Постоянные значения полей
GROUP_PROVIDER
public final String GROUP_PROVIDER
- См. также:
- Постоянные значения полей
Подробное описание конструкторов
JndiLoginModule
public JndiLoginModule()
Подробное описание методов
initialize
public void initialize(Subject subject,
CallbackHandler callbackHandler,
Map<String,?> sharedState,
Map<String,?> options)Инициализация этого LoginModule.
- Задано:
-
initializeв интерфейсеLoginModule - Параметры:
-
subject-Subjectдля аутентификации. -
callbackHandler-CallbackHandlerдля связи с конечным пользователем (например, для запроса имен пользователей и паролей). -
sharedState- общиеLoginModuleсостояние. -
options- параметры, указанные в разделе параметров входаConfigurationдля этого конкретногоLoginModule.
login
public boolean login()
throws LoginExceptionЗапрос имени пользователя и пароля. Проверка пароля по отношению к соответствующей службе имён.
- Задано:
-
loginв интерфейсеLoginModule - Возвращает:
- true всегда, так как этот
LoginModuleне должен игнорироваться. - Исключения:
-
FailedLoginException- если аутентификация завершилась неудачно. -
LoginException- если этотLoginModuleне может выполнить аутентификацию.
commit
public boolean commit()
throws LoginExceptionАбстрактный метод для подтверждения процесса аутентификации (этап 2).
Этот метод вызывается, если общая аутентификация LoginContext завершилась успешно (соответствующие модули входа REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL завершились успешно).
Если попытка аутентификации данного модуля входа завершилась успешно (проверяется путём извлечения сохранённого частного состояния методом login), то этот метод сопоставляет UnixPrincipal с Subject, расположенным в LoginModule. Если попытка аутентификации данного модуля входа завершилась неудачно, то этот метод удаляет любое сохранённое состояние.
- Задано:
-
commitв интерфейсеLoginModule - Возвращает:
- true, если попытки входа и подтверждения данного модуля входа завершились успешно, или false в противном случае.
- Исключения:
-
LoginException- если подтверждение завершилось неудачно
abort
public boolean abort()
throws LoginExceptionЭтот метод вызывается, если общая аутентификация LoginContext завершилась неудачно. (соответствующие модули входа REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL не завершились успешно).
Если попытка аутентификации данного модуля входа завершилась успешно (проверяется путём извлечения сохранённого частного состояния методами login и commit ), то этот метод очищает любое сохранённое состояние.
- Задано:
-
abortв интерфейсеLoginModule - Возвращает:
- false, если попытки входа и/или подтверждения данного модуля входа завершились неудачно, и true в противном случае.
- Исключения:
-
LoginException- если отмена завершилась неудачно.
logout
public boolean logout()
throws LoginExceptionВыход пользователя.
Этот метод удаляет принципы, добавленные методом commit.
- Задано:
-
logoutв интерфейсеLoginModule - Возвращает:
- true во всех случаях, так как этот
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/jdk.security.auth/com/sun/security/auth/module/JndiLoginModule.html