Класс Configuration
- java.lang.Object
-
- javax.security.auth.login.Configuration
- Прямые известные подклассы:
ConfigFile
public abstract class Configuration extends Object
Объект Configuration отвечает за указание, какие LoginModules должны использоваться для конкретного приложения и в каком порядке должны вызываться LoginModules.
Конфигурация входа содержит следующую информацию. Обратите внимание, что этот пример представляет только стандартный синтаксис для Configuration. Реализации подклассов этого класса могут реализовывать альтернативные синтаксисы и могут извлекать Configuration из любого источника, такого как файлы, базы данных или серверы.
Name {
ModuleClass Flag ModuleOptions;
ModuleClass Flag ModuleOptions;
ModuleClass Flag ModuleOptions;
};
Name {
ModuleClass Flag ModuleOptions;
ModuleClass Flag ModuleOptions;
};
other {
ModuleClass Flag ModuleOptions;
ModuleClass Flag ModuleOptions;
}; Каждый элемент в Configuration индексируется с помощью имени приложения, Name, и содержит список LoginModules, настроенных для этого приложения. Каждый LoginModule указывается через полное имя класса.
Проверка подлинности происходит по списку модулей в точном порядке, указанном в списке. Если для приложения нет конкретной записи, используется запись для "other".
Значение Flag управляет общим поведением по мере продвижения проверки подлинности по стеку. Ниже представлено описание допустимых значений для Flag и их семантики:
1) Required - The LoginModule is required to succeed.
If it succeeds or fails, authentication still continues
to proceed down the LoginModule list.
2) Requisite - The LoginModule is required to succeed.
If it succeeds, authentication continues down the
LoginModule list. If it fails,
control immediately returns to the application
(authentication does not proceed down the
LoginModule list).
3) Sufficient - The LoginModule is not required to
succeed. If it does succeed, control immediately
returns to the application (authentication does not
proceed down the LoginModule list).
If it fails, authentication continues down the
LoginModule list.
4) Optional - The LoginModule is not required to
succeed. If it succeeds or fails,
authentication still continues to proceed down the
LoginModule list. Общая проверка подлинности успешна только в том случае, если все LoginModules Required и Requisite завершаются успешно. Если настроен и успешно завершен Sufficient LoginModule, то для успешной общей проверки подлинности должны быть успешны только LoginModules Required и Requisite, предшествующие этому Sufficient LoginModule. Если для приложения не настроены LoginModules Required или Requisite, то должен быть успешно завершен хотя бы один Sufficient или Optional LoginModule.
ModuleOptions — это список значений, разделенных пробелами, специфичных для LoginModule, которые передаются непосредственно в базовые LoginModules. Опции определяются самим LoginModule, и управляют поведением внутри него. Например, LoginModule может определить опции для поддержки возможностей отладки/тестирования. Правильный способ указания опций в Configuration заключается в использовании следующего сочетания ключ-значение: debug="true". Ключ и значение должны быть разделены символом «равно», а значение должно быть заключено в двойные кавычки. Если в значении встречается строка в формате ${system.property}, она будет расширена до значения системной переменной. Обратите внимание, что нет ограничений на количество опций, которые может определить LoginModule.
Ниже представлен пример Configuration записи, основанный на указанном выше синтаксисе:
Login {
com.sun.security.auth.module.UnixLoginModule required;
com.sun.security.auth.module.Krb5LoginModule optional
useTicketCache="true"
ticketCache="${user.home}${/}tickets";
}; Этот Configuration указывает, что для приложения с именем «Login» пользователи должны сначала пройти проверку подлинности в модуле com.sun.security.auth.module.UnixLoginModule, который должен быть успешным. Даже если проверка подлинности UnixLoginModule завершается неудачей, модуль com.sun.security.auth.module.Krb5LoginModule всё равно вызывается. Это помогает скрыть причину ошибки. Поскольку Krb5LoginModule является Optional, общая проверка подлинности успешна только в том случае, если UnixLoginModule (Required) успешен.
Также обратите внимание, что модульные опции useTicketCache="true" и ticketCache=${user.home}${/}tickets" передаются в Krb5LoginModule. Эти опции инструктируют Krb5LoginModule использовать кэш билетов по указанному расположению. Системные переменные user.home и / (file.separator) расширяются до соответствующих значений.
В любое время во время выполнения устанавливается только один объект Configuration. Объект Configuration можно установить, вызвав метод setConfiguration. Установленный объект Configuration можно получить, вызвав метод getConfiguration.
Если в ходе выполнения не был установлен ни один объект Configuration, вызов getConfiguration устанавливает экземпляр реализации по умолчанию Configuration (реализация подкласса по умолчанию этого абстрактного класса). Реализацию Configuration по умолчанию можно изменить, установив значение системной переменной login.configuration.provider до полного имени желаемой реализации подкласса Configuration.
Код приложения может напрямую унаследовать от Configuration, чтобы предоставить пользовательскую реализацию. Кроме того, экземпляр объекта Configuration может быть создан путём вызова одного из getInstance фабричных методов со стандартным типом. Тип политики по умолчанию — "JavaLoginConfig". Список стандартных типов Configuration см. в разделе «Configuration» спецификации «Названия стандартных алгоритмов Java Security» по адресу https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#configuration-types.
- C тех пор как:
- 1.4
- См. также:
-
LoginContext,security properties
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static interface | Configuration.Parameters | Это представляет собой маркерный интерфейс для параметров Configuration. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Configuration() | Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract AppConfigurationEntry[] | getAppConfigurationEntry(String name) | Получение AppConfigurationEntries для указанного |
static Configuration | getConfiguration() | Получить установленную конфигурацию входа. |
static Configuration | getInstance(String type,
Configuration.Parameters params) | Возвращает объект Configuration указанного типа. |
static Configuration | getInstance(String type,
Configuration.Parameters params,
String provider) | Возвращает объект Configuration указанного типа. |
static Configuration | getInstance(String type,
Configuration.Parameters params,
Provider provider) | Возвращает объект Configuration указанного типа. |
Configuration.Parameters | getParameters() | Возвращение параметров Configuration. |
Provider | getProvider() | Возвращение поставщика данного Configuration. |
String | getType() | Возвращение типа данного Configuration. |
void | refresh() | Обновление и перезагрузка Configuration. |
static void | setConfiguration(Configuration configuration) | Установка конфигурации входа |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
Конфигурация
protected Configuration()
Единственный конструктор. (Для вызова конструкторами подклассов, обычно неявный.)
Методы
getConfiguration
public static Configuration getConfiguration()
Получить установленную конфигурацию входа.
- Возвращает:
- конфигурацию входа. Если объект Configuration был задан с помощью метода
Configuration.setConfiguration, то возвращается этот объект. В противном случае возвращается объект конфигурации по умолчанию. - Исключение:
-
SecurityException- если у вызывающего объекта нет разрешения на получение конфигурации. - См. также:
setConfiguration(javax.security.auth.login.Configuration)
setConfiguration
public static void setConfiguration(Configuration configuration)
Установить конфигурацию входа.
- Параметры:
-
configuration- новая конфигурация - Исключение:
-
SecurityException- если текущий поток не имеет разрешения на установку конфигурации. - См. также:
getConfiguration()
getInstance
public static Configuration getInstance(String type,
Configuration.Parameters params)
throws NoSuchAlgorithmException Возвращает объект Configuration указанного типа.
Этот метод обходит список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Configuration, инкапсулирующий реализацию ConfigurationSpi от первого поставщика, который поддерживает указанный тип.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание об реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
type- указанный тип Configuration. См. раздел Configuration в спецификации Java Security Standard Algorithm Names для списка стандартных типов Configuration. -
params- параметры для Configuration, которые могут быть null. - Возвращает:
- новый объект
Configuration - Исключение:
-
IllegalArgumentException- если указанные параметры не понятны реализациейConfigurationSpiот выбранногоProvider -
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюConfigurationSpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего объекта нет разрешения на получение экземпляраConfigurationдля указанного типа - С момента:
- 1.6
- См. также:
Provider
getInstance
public static Configuration getInstance(String type,
Configuration.Parameters params,
String provider)
throws NoSuchProviderException,
NoSuchAlgorithmException Возвращает объект Configuration указанного типа.
Возвращается новый объект Configuration, инкапсулирующий реализацию ConfigurationSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
type- указанный тип Configuration. См. раздел Configuration в спецификации Java Security Standard Algorithm Names для списка стандартных типов Configuration. -
params- параметры для Configuration, которые могут быть null. -
provider- поставщик. - Возвращает:
- новый объект
Configuration - Исключение:
-
IllegalArgumentException- если указанный поставщикnullили пустой, или если указанные параметры не понятны реализациейConfigurationSpiот указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NoSuchAlgorithmException- если указанный поставщик не поддерживает реализациюConfigurationSpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего объекта нет разрешения на получение экземпляраConfigurationдля указанного типа - С момента:
- 1.6
- См. также:
Provider
getInstance
public static Configuration getInstance(String type,
Configuration.Parameters params,
Provider provider)
throws NoSuchAlgorithmException Возвращает объект Configuration указанного типа.
Возвращается новый объект Configuration, инкапсулирующий реализацию ConfigurationSpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
type- указанный тип Configuration. См. раздел Configuration в спецификации Java Security Standard Algorithm Names для списка стандартных типов Configuration. -
params- параметры для Configuration, которые могут быть null. -
provider- поставщик. - Возвращает:
- новый объект
Configuration - Исключение:
-
IllegalArgumentException- если указанныйProviderявляетсяnull, или если указанные параметры не понятны реализациейConfigurationSpiот указанного поставщика -
NoSuchAlgorithmException- если указанныйProviderне поддерживает реализациюConfigurationSpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего объекта нет разрешения на получение экземпляраConfigurationдля указанного типа - С момента:
- 1.6
- См. также:
Provider
getProvider
public Provider getProvider()
Возвращает поставщика этой конфигурации.
У этого экземпляра Configuration будет поставщик только в том случае, если он был получен с помощью вызова Configuration.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- поставщика этой конфигурации или null.
- С момента:
- 1.6
getType
public String getType()
Возвращает тип этой конфигурации.
У этого экземпляра Configuration будет тип только в том случае, если он был получен с помощью вызова Configuration.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- тип этой конфигурации или null.
- С момента:
- 1.6
getParameters
public Configuration.Parameters getParameters()
Возвращает параметры конфигурации.
У этого экземпляра Configuration будут параметры только в том случае, если он был получен с помощью вызова Configuration.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- параметры конфигурации или null.
- С момента:
- 1.6
getAppConfigurationEntry
public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
Получить AppConfigurationEntries для указанного name из этой конфигурации.
- Параметры:
-
name- имя, используемое для индексации конфигурации. - Возвращает:
- массив AppConfigurationEntries для указанного
nameиз этой конфигурации, или null, если для указанногоnameнет записей
refresh
public void refresh()
Обновить и перезагрузить конфигурацию.
Этот метод вызывает обновление/перезагрузку содержимого этого объекта Configuration способом, зависящим от реализации. Например, если этот объект Configuration хранит свои записи в файле, вызов refresh может привести к повторному чтению файла.
Реализация по умолчанию этого метода ничего не делает. Этот метод должен быть переопределен, если обновление поддерживается реализацией.
- Исключение:
-
SecurityException- если у вызывающего объекта нет разрешения на обновление своей конфигурации.
© 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/java.base/javax/security/auth/login/Configuration.html