Spec-Zone.ru › OpenJDK 27

Класс 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, ключи принципала будут получены из пароля пользователя, а KeyTab — это таблица ключей, используемая, когда useKeyTab установлено в true. Использование объекта KeyTab ограничено указанным принципалом, если только значение принципала не равно "*".

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

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

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

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

Ниже перечислены параметры конфигурации, поддерживаемые для 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, если не нужно запрашивать пароль, когда учетные данные невозможно получить из кэша, таблицы ключей или общего состояния. (Значение по умолчанию — false.) Если задано значение true, учетные данные должны быть получены из кэша, таблицы ключей или общего состояния. В противном случае аутентификация завершится ошибкой.
useKeyTab:
Установите значение true, если модуль должен получить ключ принципала из таблицы ключей. (Значение по умолчанию — false.) Если keytab не задан, модуль определит расположение таблицы ключей из файла конфигурации Kerberos. Если расположение не указано в файле конфигурации Kerberos, модуль будет искать файл {user.home}{file.separator}krb5.keytab.
keyTab:
Задайте имя файла таблицы ключей, из которого нужно получить секретный ключ принципала.
storeKey:
Установите значение true, если таблица ключей или ключ принципала должны храниться в закрытых учетных данных Subject. Если isInitiator имеет значение false, а principal равно "*", сохраненный объект KeyTab может использоваться кем угодно; в противном случае его использование ограничено только указанным принципалом.
principal:
Имя используемого принципала. Принципалом может быть простое имя пользователя, например "testuser", или имя службы, например "host/testhost.eng.sun.com". Параметр principal можно использовать для задания принципала, если в keyTab имеются учетные данные для нескольких принципалов или требуется использовать только определенный кэш билетов. Принципала также можно задать с помощью системного свойства sun.security.krb5.principal. Кроме того, если это системное свойство определено, будет использовано его значение. Если свойство не задано, используется имя принципала из конфигурации. Если isInitiator имеет значение false, имя принципала можно задать как "*". В этом случае акцептор не привязан к одному принципалу. Он может действовать от имени любого принципала, запрошенного инициатором, если для этого принципала найдутся ключи. Если isInitiator имеет значение true, имя принципала нельзя задать как "*".
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 удаляет имя пользователя и пароль, сохраненные в общем состоянии модуля, после завершения обоих этапов аутентификации (login и commit).

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

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

  1. кэш билетов
  2. таблица ключей
  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 = <filename>  doNotPrompt = true
Это недопустимое сочетание, поскольку useKeyTab не установлено в true, а параметр keyTab задан. Возникнет ошибка конфигурации.
debug = true
Запросить у пользователя имя принципала и пароль. Использовать обмен данными аутентификации для получения TGT от KDC и заполнить Subject принципалом и TGT. Вывести отладочные сообщения.
useTicketCache = true  doNotPrompt = true
Проверить TGT в кэше по умолчанию и заполнить Subject принципалом и TGT. Если TGT недоступен, не запрашивать его у пользователя, а завершить аутентификацию с ошибкой.
principal = <name>  useTicketCache = true  doNotPrompt = true
Получить TGT для принципала из кэша по умолчанию и заполнить набор принципалов и закрытых учетных данных Subject. Если кэш билетов недоступен или не содержит TGT принципала, аутентификация завершится ошибкой.
useTicketCache = true
ticketCache = <file name>
useKeyTab = true
keyTab = <keytab filename>
principal = <principal name>
doNotPrompt = true
Выполнить поиск TGT принципала в кэше. Если он недоступен, использовать ключ из таблицы ключей для обмена данными аутентификации с KDC и получения TGT. Subject будет заполнен принципалом и TGT. Если ключ недоступен или недействителен, аутентификация завершится ошибкой.
useTicketCache = true  ticketCache = <filename>
TGT будет получен из указанного кэша. Будет использовано имя принципала Kerberos, указанное в кэше билетов. Если TGT отсутствует в кэше билетов, пользователю будет предложено ввести имя принципала и пароль. TGT будет получен в результате обмена данными аутентификации с KDC. Subject будет заполнен TGT.
useKeyTab = true  keyTab=<keytab filename>  principal = <principal name>  storeKey = true
Ключ принципала будет получен из таблицы ключей. Если ключ отсутствует в таблице ключей, пользователю будет предложено ввести пароль принципала. Subject будет заполнен ключом принципала, полученным либо из таблицы ключей, либо из введенного пароля.
useKeyTab = true  keyTab = <keytabname>  storeKey = true  doNotPrompt = false
Пользователю будет предложено ввести имя принципала службы. Если долговременный ключ принципала доступен в таблице ключей, он будет добавлен в закрытые учетные данные Subject. Будет предпринята попытка обмена данными аутентификации с использованием имени принципала и ключа из таблицы ключей. В случае успеха TGT будет добавлен в закрытый набор учетных данных Subject. В противном случае аутентификация завершится ошибкой.
isInitiator = false  useKeyTab = true  keyTab = <keytabname>  storeKey = true  principal = *
Акцептор будет не привязан к конкретному принципалу и сможет действовать от имени любого принципала, если для него имеются ключи в таблице ключей.
useTicketCache = true
ticketCache = <file name>
useKeyTab = true
keyTab = <file name>
storeKey = true
principal = <principal name>
TGT клиента будет получен из кэша билетов и добавлен в закрытый набор учетных данных Subject. Если TGT недоступен в кэше билетов или имя клиента в TGT не совпадает с именем принципала, Java использует секретный ключ для получения TGT посредством обмена данными аутентификации и добавляет его в закрытые учетные данные Subject. Этот секретный ключ сначала будет получен из таблицы ключей. Если ключ недоступен, пользователю будет предложено ввести пароль. В обоих случаях ключ, полученный из пароля, будет добавлен в закрытый набор учетных данных 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API планируется удалить в будущей версии.
Финализация устарела и планируется к удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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