Класс JndiLoginModule
- Все реализованные интерфейсы:
LoginModule
public class JndiLoginModule extends Object implements LoginModule
Этот LoginModule взаимодействует с любым соответствующим требованиям поставщиком служб JNDI. Чтобы указать этому LoginModule использовать конкретного поставщика служб JNDI, в конфигурации входа Configuration для этого LoginModule необходимо задать два параметра.
user.provider.url=name_service_url
group.provider.url=name_service_url
name_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=username. Если поиск завершается успешно, этот LoginModule получает зашифрованный пароль пользователя из найденной записи с помощью атрибута userPassword. Этот LoginModule предполагает, что пароль хранится в виде массива байтов, который при преобразовании в String имеет следующий формат:
"{crypt}encrypted_password"
Сервер каталога LDAP должен быть настроен так, чтобы разрешать чтение атрибута userPassword. Если пользователь ввел действительные имя пользователя и пароль, этот LoginModule связывает UnixPrincipal, UnixNumericUserPrincipal и соответствующие UnixNumericGroupPrincipals с Subject. Этот LoginModule также распознает следующие параметры 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.
- Начиная с:
- 1.4
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
final String |
GROUP_PROVIDER |
Служба каталогов/путь, по которым этот модуль может получить доступ к соответствующей информации о группах. |
final String |
USER_PROVIDER |
Служба каталогов/путь, по которым этот модуль может получить доступ к соответствующей информации о пользователях. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JndiLoginModule() |
Создает JndiLoginModule. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
abort() |
Этот метод вызывается, если общая аутентификация LoginContext завершилась неудачно. |
boolean |
commit() |
Абстрактный метод для фиксации процесса аутентификации (фаза 2). |
void |
initialize |
Инициализирует этот LoginModule. |
boolean |
login() |
Запрашивает имя пользователя и пароль. |
boolean |
logout() |
Выполняет выход пользователя из системы. |
Подробное описание полей
USER_PROVIDER
public final String USER_PROVIDER
- См. также:
GROUP_PROVIDER
public final String GROUP_PROVIDER
- См. также:
Подробное описание конструкторов
JndiLoginModule
public JndiLoginModule()
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
Этот метод вызывается, если общая аутентификация LoginContext завершилась успешно (успешно завершились соответствующие LoginModules с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL).
Если попытка аутентификации этого LoginModule завершилась успешно (что проверяется путем получения закрытого состояния, сохраненного методом login), этот метод связывает UnixPrincipal с Subject, находящимся в LoginModule. Если попытка аутентификации этого LoginModule завершилась неудачно, этот метод удаляет все ранее сохраненное состояние.
- Определено в:
-
commitв интерфейсеLoginModule - Возвращает:
- true, если собственные попытки входа и фиксации этого LoginModule завершились успешно, иначе false.
- Выбрасывает:
-
LoginException— если фиксация не удалась
abort
public boolean abort() throws LoginException
Если попытка аутентификации этого LoginModule завершилась успешно (что проверяется путем получения закрытого состояния, сохраненного методами login и commit), этот метод очищает все ранее сохраненное состояние.
- Определено в:
-
abortв интерфейсеLoginModule - Возвращает:
- false, если собственные попытки входа и/или фиксации этого LoginModule завершились неудачно, иначе true.
- Выбрасывает:
-
LoginException— если прерывание не удалось.
logout
public boolean logout() throws LoginException
Этот метод удаляет субъекты Principals, добавленные методом commit.
- Определено в:
-
logoutв интерфейсеLoginModule - Возвращает:
- во всех случаях true, поскольку этот
LoginModuleне следует игнорировать. - Выбрасывает:
-
LoginException— если выход из системы не удался.
© 1993, 2025, 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/25/docs/api/jdk.security.auth/com/sun/security/auth/module/JndiLoginModule.html