Spec-Zone.ru › OpenJDK 21

Класс 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, используя опцию 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, если билет не может быть извлечен из кэша файла, он будет использовать API Local Security Authority (LSA) для получения TGT.
ticketCache:
Установите это значение в имя кэша билетов, содержащего TGT пользователя. Если это значение установлено, useTicketCache также должно быть установлено в true; в противном случае будет возвращена ошибка конфигурации.
renewTGT:
Установите это значение в true, если вы хотите обновить TGT, когда он истекает более чем наполовину (время до истечения меньше времени с момента начала). Если это значение установлено, useTicketCache также должно быть установлено в true; в противном случае будет возвращена ошибка конфигурации.
doNotPrompt:
Установите это значение в true, если вы не хотите, чтобы запрашивался пароль, если учетные данные не могут быть получены из кэша, keytab или через общий ресурс (значение по умолчанию — false). Если установлено в true, учетные данные должны быть получены из кэша, keytab или общего ресурса. В противном случае аутентификация завершится неудачей.
useKeyTab:
Установите это значение в true, если вы хотите, чтобы модуль получал ключ принципала из keytab (значение по умолчанию — False). Если keytab не установлено, модуль найдет keytab из файла конфигурации Kerberos. Если он не указан в файле конфигурации Kerberos, он будет искать файл {user.home}{file.separator}krb5.keytab.
keyTab:
Установите это значение в имя файла keytab для получения секретного ключа принципала.
storeKey:
Установите это значение в true, если вы хотите сохранить keytab или ключ принципала в частных учетных данных субъекта. Для 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, этот модуль аутентификации извлекает имя пользователя и пароль из общего состояния модуля, используя "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, этот модуль аутентификации очищает имя пользователя и пароль, сохраненные в общем состоянии модуля, после завершения обеих фаз аутентификации (входа в систему и подтверждения).

Если системная переменная принципала или ключ уже предоставлены, значение "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
Запросить у пользователя имя принципала и пароль. Используйте обмен аутентификации, чтобы получить TGT от KDC и заполнить Subject именем принципала и TGT. Выводить сообщения отладки.

 useTicketCache = true  doNotPrompt = true
Проверить кеш по умолчанию на наличие TGT и заполнить Subject именем принципала и TGT. Если TGT недоступен, не запрашивать у пользователя, а вместо этого завершить аутентификацию с ошибкой.

 principal = <name>  useTicketCache = true  doNotPrompt = true
Получить TGT из кеша по умолчанию для принципала и заполнить имя принципала и секретные данные субъекта. Если кеш билетов недоступен или не содержит TGT принципала, аутентификация завершится ошибкой.

 useTicketCache = true
 ticketCache = <file name>
 useKeyTab = true
 keyTab = <keytab filename>
 principal = <principal name>
 doNotPrompt = true
Поиск в кэше TGT для принципала. Если он недоступен, используйте ключ в keytab для выполнения обмена аутентификации с KDC и получения TGT. Субъект будет заполнен именем принципала и TGT. Если ключ недоступен или недействителен, аутентификация завершится ошибкой.

 useTicketCache = true  ticketCache = <filename>
TGT будет получен из указанного кэша. Имя Kerberos-принципала, используемое в этом случае, будет именем принципала в кэше билетов. Если TGT недоступен в кэше билетов, пользователя попросят ввести имя принципала и пароль. TGT будет получен с помощью обмена аутентификации с KDC. Субъект будет заполнен TGT.

 useKeyTab = true  keyTab=<keytab filename>  principal = <principal name>  storeKey = true
Ключ для принципала будет извлечён из keytab. Если ключ недоступен в keytab, пользователя попросят ввести пароль принципала. Субъект будет заполнен ключом принципала, полученным либо из keytab, либо выведенным из введённого пароля.

 useKeyTab = true  keyTab = <keytabname>  storeKey = true  doNotPrompt = false
Пользователю будет предложено ввести имя принципала службы. Если долгосрочный ключ принципала доступен в keytab, он будет добавлен к закрытым данным субъекта. Будет предпринят обмен аутентификацией с именем принципала и ключом из Keytab. Если обмен успешен, TGT будет добавлен к закрытым данным субъекта. В противном случае аутентификация завершится ошибкой.

 isInitiator = false  useKeyTab = true  keyTab = <keytabname>  storeKey = true  principal = *
Приёмник будет неопределённым приёмником и может действовать как любой принципал, при условии, что у этого принципала есть ключи в keytab.

 useTicketCache = true
 ticketCache = <file name>
 useKeyTab = true
 keyTab = <file name>
 storeKey = true
 principal = <principal name>
TGT клиента будет извлечён из кэша билетов и добавлен к закрытым данным Subject. Если TGT недоступен в кэше билетов или имя клиента TGT не соответствует имени принципала, Java использует секретный ключ для получения TGT с помощью обмена аутентификацией и добавит его к закрытым данным субъекта. Сначала этот секретный ключ будет извлечён из keytab. Если ключ недоступен, пользователя попросят ввести пароль. В любом случае, ключ, полученный из пароля, будет добавлен к закрытым данным субъекта.

 isInitiator = false
Настроен для работы только как приёмник, учётные данные не приобретаются через обмен AS. Только для приёмников установите это значение в false. Для инициаторов не устанавливайте это значение в false.

 isInitiator = true
Настроен для работы только как инициатор, учётные данные приобретаются через обмен AS. Для инициаторов установите это значение в true или оставьте этот параметр без изменения, в этом случае будет использоваться значение по умолчанию (true).

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

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

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

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

Методы, объявленные в классе java.lang.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.
Specified by:
initialize в интерфейсе LoginModule
Parameters:
subject - аутентифицируемый Subject.
callbackHandler - обработчик обращений для общения с конечным пользователем (например, для запроса имён пользователей и паролей).
sharedState - общее состояние LoginModule.
options - параметры, указанные в файле входа Configuration для данного LoginModule.

login

public boolean login() throws LoginException
Произвести аутентификацию пользователя
Specified by:
login в интерфейсе LoginModule
Returns:
true во всех случаях, так как этот LoginModule не должен игнорироваться.
Throws:
FailedLoginException - если аутентификация завершилась неудачно.
LoginException - если этот LoginModule не может выполнить аутентификацию.

commit

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

Если собственный процесс аутентификации этого модуля аутентификации завершился успешно (проверяется путём извлечения сохранённого частного состояния методом login), этот метод ассоциирует Krb5Principal с Subject, расположенной в LoginModule. Он добавляет учётные данные Kerberos к закрытым данным субъекта. Если собственный процесс аутентификации этого модуля аутентификации завершился неудачно, этот метод удаляет любое сохранённое состояние.

Specified by:
commit в интерфейсе LoginModule
Returns:
true, если собственный вход в систему и попытка применения этого модуля аутентификации завершились успешно, или false в противном случае.
Throws:
LoginException - если применение завершилось неудачно.

abort

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

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

Specified by:
abort в интерфейсе LoginModule
Returns:
false, если собственный вход в систему и/или попытка применения этого модуля аутентификации завершились неудачно, и true в противном случае.
Throws:
LoginException - если отмена завершилась неудачно.

logout

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

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

Specified by:
logout в интерфейсе LoginModule
Returns:
true во всех случаях, так как этот LoginModule не должен игнорироваться.
Throws:
LoginException - если выход из системы завершился неудачно.

© 1993, 2023, 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/21/docs/api/jdk.security.auth/com/sun/security/auth/module/Krb5LoginModule.html

Spec-Zone.ru

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