Spec-Zone.ru › OpenJDK 25

Класс Krb5LoginModule

java.lang.Object
com.sun.security.auth.module.Krb5LoginModule
Все реализуемые интерфейсы:
LoginModule
public class Krb5LoginModule extends Object implements LoginModule
Этот LoginModule выполняет аутентификацию пользователей с использованием протоколов Kerberos.

Запись конфигурации для Krb5LoginModule содержит несколько параметров, управляющих процессом аутентификации и добавлением данных в набор закрытых учетных данных Subject. Независимо от этих параметров, набор субъектов и набор закрытых учетных данных Subject обновляются только при вызове commit. При вызове commit объект KerberosPrincipal добавляется в набор субъектов Subject (если только principal не задано как "*"). Если isInitiator имеет значение true, объект KerberosTicket добавляется в набор закрытых учетных данных Subject.

Если для записи конфигурации KerberosLoginModule параметр storeKey установлен в true, то KerberosKey или KeyTab также будут добавлены в набор закрытых учетных данных субъекта. KerberosKey: ключ principal будут получены из пароля пользователя, а KeyTab — это keytab, используемый, когда useKeyTab установлен в true. Использование объекта KeyTab ограничено указанным principal, если только значение principal не равно "*".

Этот LoginModule распознает параметр doNotPrompt. Если ему присвоено значение true, запрос пароля у пользователя выполняться не будет.

Пользователь может указать расположение кэша билетов с помощью параметра ticketCache в записи конфигурации.

Пользователь может указать расположение keytab с помощью параметра keyTab в записи конфигурации.

Имя principal можно указать в записи конфигурации с помощью параметра principal. Имя principal может быть простым именем пользователя, именем службы, например host/mission.eng.sun.com, или символом "*". Principal также можно задать с помощью системного свойства sun.security.krb5.principal. Это свойство проверяется во время входа в систему. Если это свойство не задано, используется имя principal из конфигурации. Если свойство principal не задано и запись principal также отсутствует, пользователю будет предложено ввести имя. Если это свойство или запись заданы, а useTicketCache установлен в true, используется только TGT, принадлежащий этому principal.

Ниже приведен список параметров конфигурации, поддерживаемых Krb5LoginModule:

refreshKrb5Config:
Установите значение true, если требуется обновить конфигурацию перед вызовом метода login.
useTicketCache:
Установите значение true, если требуется получить TGT из кэша билетов. Установите для этого параметра значение false, если не хотите, чтобы этот модуль использовал кэш билетов. (По умолчанию — False). Этот модуль выполняет поиск кэша билетов в следующих расположениях: в Linux он ищет кэш билетов в /tmp/krb5cc_uid, где uid — числовой идентификатор пользователя. Если кэш билетов недоступен в указанном выше расположении или используется платформа Windows, поиск кэша выполняется по пути {user.home}{file.separator}krb5cc_{user.name}. Переопределить расположение кэша билетов можно с помощью ticketCache. В Windows, если билет не удается получить из файлового кэша билетов, для получения TGT используется API Local Security Authority (LSA).
ticketCache:
Установите имя кэша билетов, содержащего TGT пользователя. Если этот параметр задан, useTicketCache также должен иметь значение true; в противном случае будет возвращена ошибка конфигурации.
renewTGT:
Установите значение true, если требуется обновить TGT, когда истекло более половины срока его действия (время до истечения срока действия меньше времени, прошедшего с момента начала действия). Если этот параметр задан, useTicketCache также должен иметь значение true; в противном случае будет возвращена ошибка конфигурации.
doNotPrompt:
Установите значение true, если не хотите, чтобы у пользователя запрашивался пароль, когда учетные данные не удается получить из кэша, keytab или общего состояния. (По умолчанию — false.) Если установлено значение true, учетные данные должны быть получены из кэша, keytab или общего состояния. В противном случае аутентификация завершится ошибкой.
useKeyTab:
Установите значение true, если модуль должен получить ключ principal из keytab. (Значение по умолчанию — False.) Если keytab не задан, модуль найдет keytab в файле конфигурации Kerberos. Если он не указан в файле конфигурации Kerberos, модуль выполнит поиск файла {user.home}{file.separator}krb5.keytab.
keyTab:
Установите имя файла keytab, из которого следует получить секретный ключ principal.
storeKey:
Установите значение true, если требуется сохранить keytab или ключ principal в наборе закрытых учетных данных Subject. Если isInitiator имеет значение false, а principal равно "*", сохраненный KeyTab может использоваться кем угодно; в противном случае его использование ограничено указанным principal.
principal:
Имя principal, который следует использовать. Principal может быть простым именем пользователя, например "testuser", или именем службы, например "host/testhost.eng.sun.com". Параметр principal можно использовать для задания principal, если в keyTab имеются учетные данные для нескольких principal или если требуется использовать только определенный кэш билетов. Principal также можно задать с помощью системного свойства sun.security.krb5.principal. Кроме того, если это системное свойство определено, будет использоваться оно. Если это свойство не задано, будет использоваться имя principal из конфигурации. Если isInitiator имеет значение false, в качестве имени principal можно задать "*". В этом случае акцептор не привязан к одному principal. Он может действовать от имени любого principal, запрошенного инициатором, если удается найти ключи для этого principal. Если isInitiator имеет значение true, в качестве имени principal нельзя задать "*".
isInitiator:
Установите значение true для инициатора. Установите значение false, если допускается только акцептор. (По умолчанию — true.) Примечание: не устанавливайте для этого параметра значение false для инициаторов.

Этот LoginModule также распознает следующие дополнительные параметры Configuration, позволяющие использовать общие имя пользователя и пароль в разных модулях аутентификации:

useFirstPass:
если значение true, этот LoginModule получает имя пользователя и пароль из общего состояния модуля, используя соответственно "javax.security.auth.login.name" и "javax.security.auth.login.password" в качестве ключей. Полученные значения используются для аутентификации. Если аутентификация завершается ошибкой, повторная попытка не выполняется, а сведения об ошибке передаются вызывающему приложению.
tryFirstPass:
если значение true, этот LoginModule получает имя пользователя и пароль из общего состояния модуля, используя соответственно "javax.security.auth.login.name" и "javax.security.auth.login.password" в качестве ключей. Полученные значения используются для аутентификации. Если аутентификация завершается ошибкой, модуль использует CallbackHandler для получения нового имени пользователя и пароля и повторяет попытку аутентификации. Если аутентификация завершается ошибкой, сведения об ошибке передаются вызывающему приложению.
storePass:
если значение true, этот LoginModule сохраняет имя пользователя и пароль, полученные от CallbackHandler, в общем состоянии модуля, используя соответственно "javax.security.auth.login.name" и "javax.security.auth.login.password" в качестве ключей. Это не выполняется, если в общем состоянии уже существуют значения имени пользователя и пароля или если аутентификация завершается ошибкой.
clearPass:
если значение true, этот LoginModule удаляет имя пользователя и пароль, сохраненные в общем состоянии модуля, после завершения обеих фаз аутентификации (входа в систему и фиксации).

Если системное свойство principal или ключ уже предоставлены, значение "javax.security.auth.login.name" в общем состоянии игнорируется.

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

  1. кэш билетов
  2. keytab
  3. общее состояние
  4. запрос пользователя

Обратите внимание: если какой-либо этап завершается ошибкой, выполняется переход к следующему. Есть только одно исключение: если этап с общим состоянием завершается ошибкой и задан useFirstPass = true, запрос пользователю не выполняется.

Примеры некоторых значений конфигурации для Krb5LoginModule в файле конфигурации JAAS и соответствующие результаты:

doNotPrompt = true
Эта комбинация недопустима, поскольку ни useTicketCache, useKeyTab, useFirstPass, ни tryFirstPass не заданы, а запросить пароль у пользователя невозможно.
ticketCache = <filename>
Эта комбинация недопустима, поскольку useTicketCache не установлен в true, а параметр ticketCache задан. Возникнет ошибка конфигурации.
renewTGT = true
Эта комбинация недопустима, поскольку useTicketCache не установлен в true, а параметр renewTGT задан. Возникнет ошибка конфигурации.
storeKey = true  useTicketCache = true  doNotPrompt = true
Эта комбинация недопустима, поскольку storeKey установлен в true, но ключ невозможно получить ни запросив его у пользователя, ни из keytab, ни из общего состояния. Возникнет ошибка конфигурации.
keyTab = <filename>  doNotPrompt = true
Эта комбинация недопустима, поскольку useKeyTab не установлен в true, а параметр keyTab задан. Возникнет ошибка конфигурации.
debug = true
Запросить у пользователя имя principal и пароль. Использовать обмен аутентификацией для получения TGT от KDC и заполнить Subject principal и TGT. Выводить отладочные сообщения.
useTicketCache = true  doNotPrompt = true
Проверить TGT в кэше по умолчанию и заполнить Subject principal и TGT. Если TGT недоступен, не запрашивать его у пользователя, а завершить аутентификацию ошибкой.
principal = <name>  useTicketCache = true  doNotPrompt = true
Получить TGT principal из кэша по умолчанию и заполнить набор principal и закрытых учетных данных Subject. Если кэш билетов недоступен или не содержит TGT principal, аутентификация завершится ошибкой.
useTicketCache = true
ticketCache = <file name>
useKeyTab = true
keyTab = <keytab filename>
principal = <principal name>
doNotPrompt = true
Выполнить поиск TGT principal в кэше. Если он недоступен, использовать ключ из keytab для обмена аутентификацией с KDC и получения TGT. Subject будет заполнен principal и TGT. Если ключ недоступен или недействителен, аутентификация завершится ошибкой.
useTicketCache = true  ticketCache = <filename>
TGT будет получен из указанного кэша. Используемое имя Kerberos principal будет взято из кэша билетов. Если TGT недоступен в кэше билетов, у пользователя будут запрошены имя principal и пароль. TGT будет получен посредством обмена аутентификацией с KDC. Subject будет заполнен TGT.
useKeyTab = true  keyTab=<keytab filename>  principal = <principal name>  storeKey = true
Ключ principal будет получен из keytab. Если ключ недоступен в keytab, у пользователя будет запрошен пароль principal. Subject будет заполнен ключом principal, полученным из keytab или производным от введенного пароля.
useKeyTab = true  keyTab = <keytabname>  storeKey = true  doNotPrompt = false
У пользователя будет запрошено имя principal службы. Если долговременный ключ principal доступен в keytab, он будет добавлен в набор закрытых учетных данных Subject. Будет предпринята попытка обмена аутентификацией с использованием имени principal и ключа из Keytab. В случае успеха TGT будет добавлен в набор закрытых учетных данных Subject. В противном случае аутентификация завершится ошибкой.
isInitiator = false  useKeyTab = true  keyTab = <keytabname>  storeKey = true  principal = *
Акцептор будет несвязанным и сможет действовать от имени любого principal, если для этого principal есть ключи в keytab.
useTicketCache = true
ticketCache = <file name>
useKeyTab = true
keyTab = <file name>
storeKey = true
principal = <principal name>
TGT клиента будет получен из кэша билетов и добавлен в набор закрытых учетных данных Subject. Если TGT недоступен в кэше билетов или имя клиента в TGT не совпадает с именем principal, Java использует секретный ключ для получения TGT посредством обмена аутентификацией и добавляет его в набор закрытых учетных данных Subject. Сначала этот секретный ключ будет получен из keytab. Если ключ недоступен, у пользователя будет запрошен пароль. В любом случае ключ, полученный из пароля, будет добавлен в набор закрытых учетных данных Subject.
isInitiator = false
Настроено выполнение только роли акцептора; учетные данные не получаются посредством обмена AS. Для акцепторов установите это значение в false. Для инициаторов не устанавливайте это значение в false.
isInitiator = true
Настроено выполнение роли инициатора; учетные данные получаются посредством обмена AS. Для инициаторов установите это значение в true или не задавайте этот параметр — в таком случае будет использоваться значение по умолчанию (true).
Начиная с:
1.4

Краткое описание конструкторов

Конструктор Описание
Krb5LoginModule()
Создает Krb5LoginModule.

Краткое описание методов

Модификатор и тип Метод Описание
boolean abort()
Этот метод вызывается, если общая аутентификация LoginContext завершилась неудачей.
boolean commit()
Этот метод вызывается, если общая аутентификация LoginContext прошла успешно (успешно завершились соответствующие LoginModules с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL).
void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
Инициализирует этот LoginModule.
boolean login()
Аутентифицирует пользователя
boolean logout()
Выполняет выход пользователя из системы.

Методы, объявленные в классе Object

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

Подробное описание конструкторов

Krb5LoginModule

public Krb5LoginModule()
Создает Krb5LoginModule.

Подробное описание методов

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), этот метод связывает Krb5Principal с Subject, находящимся в LoginModule. Он добавляет учетные данные Kerberos в набор закрытых учетных данных Subject. Если попытка аутентификации этого LoginModule завершилась неудачей, этот метод удаляет все ранее сохраненное состояние.

Определено в:
commit в интерфейсе LoginModule
Возвращает:
true, если собственные попытки входа в систему и фиксации этого LoginModule завершились успешно; в противном случае — false.
Выбрасывает:
LoginException — если фиксация завершается ошибкой.

abort

public boolean abort() throws LoginException
Этот метод вызывается, если общая аутентификация LoginContext завершилась неудачей (соответствующие LoginModules с флагами REQUIRED, REQUISITE, SUFFICIENT и OPTIONAL не завершились успешно).

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

Определено в:
abort в интерфейсе LoginModule
Возвращает:
false, если собственные попытки входа в систему и/или фиксации этого LoginModule завершились неудачей; в противном случае — true.
Выбрасывает:
LoginException — если отмена завершается ошибкой.

logout

public boolean logout() throws LoginException
Выполняет выход пользователя из системы.

Этот метод удаляет Krb5Principal, добавленный методом commit.

Определено в:
logout в интерфейсе LoginModule
Возвращает:
true во всех случаях, поскольку этот LoginModule не следует игнорировать.
Выбрасывает:
LoginException — если выход из системы завершается ошибкой.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/Krb5LoginModule.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API