Класс Policy

public abstract class Policy
extends Object

Объект Policy отвечает за определение, имеет ли код, выполняемый в среде выполнения Java, разрешение на выполнение операции, чувствительной к безопасности.

В любой момент времени в среде выполнения установлен только один объект Policy. Объект Policy может быть установлен с помощью метода setPolicy. Установленный объект Policy можно получить, вызвав метод getPolicy.

Если в среде выполнения не был установлен объект Policy, вызов getPolicy устанавливает экземпляр реализации политики по умолчанию (реализация по умолчанию подкласса этого абстрактного класса). Реализацию политики по умолчанию можно изменить, установив значение свойства безопасности policy.provider на полное имя желаемой реализации подкласса Policy. Для загрузки этого класса используется загрузчик системного класса.

Код приложения может напрямую наследовать Policy, чтобы предоставить пользовательскую реализацию. Кроме того, экземпляр объекта Policy можно создать, вызвав один из методов-фабрик getInstance со стандартным типом. Типом политики по умолчанию является "JavaPolicy".

После установки экземпляра Policy (по умолчанию или с помощью вызова setPolicy), среда выполнения Java вызывает его метод implies, когда ей необходимо определить, может ли выполняемый код (инкапсулированный в ProtectionDomain) выполнять операции, защищенные SecurityManager. Способ получения данных политики объектом Policy зависит от самой реализации Policy. Данные политики могут храниться, например, в плоском ASCII-файле, в сериализованном двоичном файле класса Policy или в базе данных.

Метод refresh заставляет объект политики обновить/перезагрузить свои данные. Эта операция зависит от реализации. Например, если объект политики хранит свои данные в файлах конфигурации, вызов refresh приведет к повторному чтению файлов конфигурации политики. Если операция обновления не поддерживается, этот метод ничего не делает. Обратите внимание, что обновленная политика может не повлиять на классы в определенной ProtectionDomain. Это зависит от реализации поставщиком политики метода implies и стратегии кэширования PermissionCollection.

Since:
1.2
См. также:
Provider, ProtectionDomain, Permission, security properties

Вложенные классы

Модификатор и тип Класс Описание
static interface  Policy.Parameters

Это представляет собой интерфейс-маркер для параметров Policy.

Поля

Модификатор и тип Поле Описание
static PermissionCollection UNSUPPORTED_EMPTY_COLLECTION

Только для чтения пустой экземпляр PermissionCollection.

Конструкторы

Конструктор Описание
Policy()

Методы

Модификатор и тип Метод Описание
static Policy getInstance​(String type, Policy.Parameters params)

Возвращает объект Policy указанного типа.

static Policy getInstance​(String type, Policy.Parameters params, String provider)

Возвращает объект Policy указанного типа.

static Policy getInstance​(String type, Policy.Parameters params, Provider provider)

Возвращает объект Policy указанного типа.

Policy.Parameters getParameters()

Возвращает параметры Policy.

PermissionCollection getPermissions​(CodeSource codesource)

Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному CodeSource.

PermissionCollection getPermissions​(ProtectionDomain domain)

Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному ProtectionDomain.

static Policy getPolicy()

Возвращает установленный объект Policy.

Provider getProvider()

Возвращает поставщика этой политики.

String getType()

Возвращает тип этой политики.

boolean implies​(ProtectionDomain domain, Permission permission)

Оценивает глобальную политику предоставленных ProtectionDomain разрешений и проверяет, предоставлено ли разрешение.

void refresh()

Обновляет/перезагружает конфигурацию политики.

static void setPolicy​(Policy p)

Устанавливает системный объект Policy.

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

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

Поля

UNSUPPORTED_EMPTY_COLLECTION

public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION

Только для чтения пустой экземпляр PermissionCollection.

Since:
1.6

Конструкторы

Policy

public Policy()

Методы

getPolicy

public static Policy getPolicy()

Возвращает установленный объект Policy. Это значение не должно кэшироваться, так как оно может быть изменено вызовом setPolicy. Этот метод сначала вызывает SecurityManager.checkPermission с разрешением SecurityPermission("getPolicy"), чтобы убедиться, что получение объекта Policy разрешено.

Возвращает:
установленный объект Policy.
Выбрасывает:
SecurityException - если менеджер безопасности существует и его метод checkPermission не разрешает получение объекта Policy.
См. также:
SecurityManager.checkPermission(Permission), setPolicy(java.security.Policy)

setPolicy

public static void setPolicy(Policy p)

Устанавливает системный объект Policy. Этот метод сначала вызывает SecurityManager.checkPermission с разрешением SecurityPermission("setPolicy"), чтобы убедиться, что установка Policy разрешена.

Параметры:
p - новый системный объект Policy.
Выбрасывает:
SecurityException - если менеджер безопасности существует и его метод checkPermission не разрешает установку Policy.
См. также:
SecurityManager.checkPermission(Permission), getPolicy()

getInstance

public static Policy getInstance(String type,
                                 Policy.Parameters params)
                          throws NoSuchAlgorithmException

Возвращает объект Policy указанного типа.

Этот метод обходит список зарегистрированных поставщиков безопасности, начиная с предпочтительного. Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi из первого поставщика, поддерживающего указанный тип.

Обратите внимание, что список зарегистрированных поставщиков можно получить через метод Security.getProviders().

Описание реализации:
Реализация JDK дополнительно использует свойство jdk.security.provider.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Он может отличаться от порядка поставщиков, возвращаемого методом Security.getProviders().
Параметры:
type - указанный тип Policy. Список стандартных типов Policy см. в разделе Policy в Спецификации стандартных имён алгоритмов Java Security.
params - параметры для Policy, которые могут быть null.
Возвращает:
новый объект Policy
Выбрасывает:
IllegalArgumentException - если указанные параметры не понятны реализацией PolicySpi из выбранного Provider
NoSuchAlgorithmException - если ни один Provider не поддерживает реализацию PolicySpi для указанного типа
NullPointerException - если type является null
SecurityException - если у вызывающего объекта нет разрешения на получение экземпляра Policy для указанного типа.
С:
1.6
См. также:
Provider

getInstance

public static Policy getInstance(String type,
                                 Policy.Parameters params,
                                 String provider)
                          throws NoSuchProviderException,
                                 NoSuchAlgorithmException

Возвращает объект Policy указанного типа.

Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков.

Обратите внимание, что список зарегистрированных поставщиков можно получить через метод Security.getProviders().

Параметры:
type - указанный тип Policy. Список стандартных типов Policy см. в разделе Policy в Спецификации стандартных имён алгоритмов Java Security.
params - параметры для Policy, которые могут быть null.
provider - поставщик.
Возвращает:
новый объект Policy
Выбрасывает:
IllegalArgumentException - если указанный поставщик является null или пустым, или если указанные параметры не понятны реализацией PolicySpi от указанного поставщика
NoSuchAlgorithmException - если указанный поставщик не поддерживает реализацию PolicySpi для указанного типа
NoSuchProviderException - если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException - если type является null
SecurityException - если у вызывающего объекта нет разрешения на получение экземпляра Policy для указанного типа.
С:
1.6
См. также:
Provider

getInstance

public static Policy getInstance(String type,
                                 Policy.Parameters params,
                                 Provider provider)
                          throws NoSuchAlgorithmException

Возвращает объект Policy указанного типа.

Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.

Параметры:
type - указанный тип Policy. Список стандартных типов Policy см. в разделе Policy в Спецификации стандартных имён алгоритмов Java Security.
params - параметры для Policy, которые могут быть null.
provider - поставщик.
Возвращает:
новый объект Policy
Выбрасывает:
IllegalArgumentException - если указанный Provider является null, или если указанные параметры не понятны реализацией PolicySpi от указанного Provider
NoSuchAlgorithmException - если указанный Provider не поддерживает реализацию PolicySpi для указанного типа
NullPointerException - если type является null
SecurityException - если у вызывающего объекта нет разрешения на получение экземпляра Policy для указанного типа.
С:
1.6
См. также:
Provider

getProvider

public Provider getProvider()

Возвращает поставщика этого объекта Policy.

У этого экземпляра Policy будет поставщик только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае метод возвращает null.

Возвращает:
поставщик этого объекта Policy или null.
С:
1.6

getType

public String getType()

Возвращает тип этого объекта Policy.

У этого экземпляра Policy будет тип только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае метод возвращает null.

Возвращает:
тип этого объекта Policy или null.
С:
1.6

getParameters

public Policy.Parameters getParameters()

Возвращает параметры Policy.

У этого экземпляра Policy будут параметры только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае метод возвращает null.

Возвращает:
параметры Policy или null.
С:
1.6

getPermissions

public PermissionCollection getPermissions(CodeSource codesource)

Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному CodeSource.

Приложениям не рекомендуется вызывать этот метод, так как эта операция может не поддерживаться всеми реализациями политики. Приложения должны полагаться только на метод implies для выполнения проверок политики. Если приложение обязательно должно вызвать метод getPermissions, оно должно вызвать getPermissions(ProtectionDomain).

По умолчанию этот метод возвращает Policy.UNSUPPORTED_EMPTY_COLLECTION. Этот метод может быть переопределен, если реализация политики может вернуть набор разрешений, предоставленных CodeSource.

Параметры:
codesource - CodeSource, которому предоставлен возвращаемый PermissionCollection.
Возвращает:
набор разрешений, предоставленных указанному CodeSource. Если эта операция поддерживается, возвращаемый набор разрешений должен быть новым изменяемым экземпляром и должен поддерживать разнородные типы Permission. Если эта операция не поддерживается, возвращается Policy.UNSUPPORTED_EMPTY_COLLECTION.

getPermissions

public PermissionCollection getPermissions(ProtectionDomain domain)

Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному ProtectionDomain.

Приложениям не рекомендуется вызывать этот метод, так как эта операция может не поддерживаться всеми реализациями политики. Приложения должны полагаться на метод implies для выполнения проверок политики.

По умолчанию этот метод сначала получает разрешения, возвращаемые методом getPermissions(CodeSource) (CodeSource берется из указанного ProtectionDomain), а также разрешения, находящиеся внутри указанного ProtectionDomain. Все эти разрешения затем объединяются и возвращаются в новом объекте PermissionCollection. Если getPermissions(CodeSource) возвращает Policy.UNSUPPORTED_EMPTY_COLLECTION, то этот метод возвращает разрешения, содержащиеся в указанном ProtectionDomain, в новом объекте PermissionCollection.

Этот метод может быть переопределен, если реализация политики поддерживает возвращение набора разрешений, предоставленных ProtectionDomain.

Параметры:
domain - ProtectionDomain, которому предоставлен возвращаемый PermissionCollection.
Возвращает:
набор разрешений, предоставленных указанному ProtectionDomain. Если эта операция поддерживается, возвращаемый набор разрешений должен быть новым изменяемым экземпляром и должен поддерживать разнородные типы Permission. Если эта операция не поддерживается, возвращается Policy.UNSUPPORTED_EMPTY_COLLECTION.
С:
1.4

implies

public boolean implies(ProtectionDomain domain,
                       Permission permission)

Оценивает глобальную политику для разрешений, предоставленных ProtectionDomain, и проверяет, предоставлено ли разрешение.

Параметры:
domain - область защиты для проверки
permission - объект Permission, подлежащий проверке на подразумевание.
Возвращает:
true, если «разрешение» является надлежащим подмножеством разрешения, предоставленного этой области защиты.
С:
1.4
См. также:
ProtectionDomain

refresh

public void refresh()

Обновляет/перезагружает конфигурацию политики. Поведение этого метода зависит от реализации. Например, вызов refresh для политики на основе файла приведет к повторному чтению файла.

По умолчанию этот метод ничего не делает. Этот метод следует переопределять, если операция обновления поддерживается реализацией политики.

© 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/java/security/Policy.html

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