Класс 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 для указанного name из данного Configuration.

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)

Установка конфигурации входа 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.preferred Security для определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемых методом 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

Spec-Zone .ru
спецификации, руководства, описания, API