Класс Policy
@Deprecated(since="17", forRemoval=true) public abstract class Policy extends Object
В среде выполнения в любой момент времени установлен только один объект Policy. Объект Policy можно установить, вызвав метод setPolicy. Установленный объект Policy можно получить, вызвав метод getPolicy.
Если в среде выполнения не установлен объект Policy, вызов метода getPolicy устанавливает экземпляр реализации политики по умолчанию (реализация по умолчанию подкласса этого абстрактного класса). Реализацию политики по умолчанию можно изменить, установив значение свойства безопасности policy.provider на полное квалифицированное имя желаемой реализации подкласса Policy. Для загрузки этого класса используется загрузчик системного класса.
Код приложения может напрямую унаследовать класс Policy для предоставления пользовательской реализации. Кроме того, экземпляр объекта Policy можно создать, вызвав один из методов-фабрик getInstance со стандартным типом. Тип политики по умолчанию — "JavaPolicy".
После установки экземпляра Policy (по умолчанию или вызовом setPolicy), среда выполнения Java вызывает его метод implies при необходимости определения, может ли выполняемый код (упакованный в ProtectionDomain) выполнять операции, защищённые менеджером безопасности. Способ получения данными политики объектом Policy зависит от реализации Policy. Данные политики могут храниться, например, в текстовом файле в формате ASCII, в сериализованном двоичном файле класса Policy или в базе данных.
Метод refresh заставляет объект политики обновить/перезагрузить свои данные. Эта операция зависит от реализации. Например, если объект политики хранит свои данные в конфигурационных файлах, вызов refresh заставит его перечитать конфигурационные файлы политики. Если операция обновления не поддерживается, этот метод ничего не делает. Обратите внимание, что обновлённая политика может не повлиять на классы в определённом ProtectionDomain. Это зависит от реализации поставщиком политики метода implies и стратегии кэширования PermissionCollection.
- С момента:
- 1.2
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static interface |
Policy.Parameters |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Этот класс полезен только в сочетании с менеджером безопасности, который устарел и может быть удалён в будущей версии. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final PermissionCollection |
UNSUPPORTED_EMPTY_COLLECTION |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Пустой экземпляр PermissionCollection, доступ к которому только для чтения. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Policy() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static Policy |
getInstance |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает объект Policy указанного типа. |
static Policy |
getInstance |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает объект Policy указанного типа. |
static Policy |
getInstance |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает объект Policy указанного типа. |
Policy.Parameters |
getParameters() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает параметры Policy. |
PermissionCollection |
getPermissions |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному CodeSource. |
PermissionCollection |
getPermissions |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному ProtectionDomain. |
static Policy |
getPolicy() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает установленный объект Policy. |
Provider |
getProvider() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает поставщика этой политики. |
String |
getType() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Возвращает тип этой политики. |
boolean |
implies |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Оценивает глобальную политику для разрешений, предоставленных ProtectionDomain, и проверяет, предоставлено ли разрешение. |
void |
refresh() |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Обновляет/перезагружает конфигурацию политики. |
static void |
setPolicy |
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии. Устанавливает глобальный объект Policy. |
Краткое описание полей
UNSUPPORTED_EMPTY_COLLECTION
public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
- С версии:
- 1.6
Краткое описание конструкторов
Policy
public Policy()
Краткое описание методов
getPolicy
public static Policy getPolicy()
setPolicy. Этот метод сначала вызывает SecurityManager.checkPermission с разрешением SecurityPermission("getPolicy"), чтобы убедиться, что получение объекта Policy разрешено.- Возвращает:
- установленный Policy.
- Исключения:
-
SecurityException- если существует security manager и его методcheckPermissionне разрешает получение объекта Policy. - См. также:
setPolicy
public static void setPolicy(Policy p)
SecurityManager.checkPermission с разрешением SecurityPermission("setPolicy"), чтобы убедиться, что установка Policy разрешена.- Параметры:
-
p- новый глобальный объект Policy. - Исключения:
-
SecurityException- если существует security manager и его методcheckPermissionне разрешает установку Policy. - См. также:
getInstance
public static Policy getInstance(String type, Policy.Parameters params) throws NoSuchAlgorithmException
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного поставщика. Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi из первого поставщика, который поддерживает указанный тип.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание по реализации:
- Реализация эталонной реализации JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
type- указанный тип Policy. Список стандартных типов Policy см. в разделе «Policy» в спецификации стандартных имен алгоритмов безопасности Java. -
params- параметры для Policy, которые могут быть null. - Возвращает:
- новый объект
Policy - Исключения:
-
IllegalArgumentException- если указанные параметры не поняты реализациейPolicySpiиз выбранногоProvider -
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюPolicySpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего абонента нет разрешения на получение экземпляраPolicyдля указанного типа. - С версии:
- 1.6
- См. также:
getInstance
public static Policy getInstance(String type, Policy.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi из указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
type- указанный тип Policy. Список стандартных типов Policy см. в разделе «Policy» в спецификации стандартных имен алгоритмов безопасности Java. -
params- параметры для Policy, которые могут быть null. -
provider- поставщик. - Возвращает:
- новый объект
Policy - Исключения:
-
IllegalArgumentException- если указанный поставщикnullили пуст, или если указанные параметры не поняты реализациейPolicySpiиз указанного поставщика -
NoSuchAlgorithmException- если указанный поставщик не поддерживает реализациюPolicySpiдля указанного типа -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего абонента нет разрешения на получение экземпляраPolicyдля указанного типа - С версии:
- 1.6
- См. также:
getInstance
public static Policy getInstance(String type, Policy.Parameters params, Provider provider) throws NoSuchAlgorithmException
Возвращается новый объект Policy, инкапсулирующий реализацию PolicySpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
type- указанный тип Policy. Список стандартных типов Policy см. в разделе «Policy» в спецификации стандартных имен алгоритмов безопасности Java. -
params- параметры для Policy, которые могут быть null. -
provider- Provider. - Возвращает:
- новый объект
Policy - Исключения:
-
IllegalArgumentException- если указанныйProviderявляетсяnull, или если указанные параметры не поняты реализациейPolicySpiиз указанногоProvider -
NoSuchAlgorithmException- если указанныйProviderне поддерживает реализациюPolicySpiдля указанного типа -
NullPointerException- еслиtypeявляетсяnull -
SecurityException- если у вызывающего абонента нет разрешения на получение экземпляраPolicyдля указанного типа - С версии:
- 1.6
- См. также:
getProvider
public Provider getProvider()
Этот экземпляр Policy будет иметь Provider только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- Provider этого Policy или null.
- С версии:
- 1.6
getType
public String getType()
Этот экземпляр Policy будет иметь тип только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- тип этого Policy или null.
- С версии:
- 1.6
getParameters
public Policy.Parameters getParameters()
Этот экземпляр Policy будет иметь параметры только в том случае, если он был получен с помощью вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- параметры Policy или null.
- С версии:
- 1.6
Получить разрешения
public PermissionCollection getPermissions(CodeSource codesource)
Приложениям не рекомендуется вызывать этот метод, так как данная операция может не поддерживаться всеми реализациями политики. Приложения должны полагаться только на метод implies для выполнения проверок политики. Если приложению абсолютно необходимо вызвать метод getPermissions, оно должно вызвать getPermissions(ProtectionDomain).
Реализация по умолчанию этого метода возвращает Policy.UNSUPPORTED_EMPTY_COLLECTION. Этот метод можно переопределить, если реализация политики может возвратить набор разрешений, предоставленных объекту CodeSource.
- Параметры:
-
codesource- объект CodeSource, которому предоставлен возвращаемый PermissionCollection. - Возвращает:
- набор разрешений, предоставленных указанному объекту CodeSource. Если операция поддерживается, возвращаемый набор разрешений должен быть новым изменяемым экземпляром и должен поддерживать разнородные типы Permission. Если операция не поддерживается, возвращается Policy.UNSUPPORTED_EMPTY_COLLECTION.
Получить разрешения
public PermissionCollection getPermissions(ProtectionDomain domain)
Приложениям не рекомендуется вызывать этот метод, так как данная операция может не поддерживаться всеми реализациями политики. Приложения должны полагаться на метод 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)
- Параметры:
-
domain- объект ProtectionDomain для проверки -
permission- объект Permission для проверки на подмножество. - Возвращает:
- true, если "разрешение" является надлежащим подмножеством разрешения, предоставленного данному объекту ProtectionDomain.
- С:
- 1.4
- См. также:
refresh
public void refresh()
refresh для политики на основе файлов приведет к повторному чтению файла. Реализация по умолчанию этого метода ничего не делает. Этот метод следует переопределить, если операция обновления поддерживается реализацией политики.
© 1993, 2021, 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/17/docs/api/java.base/java/security/Policy.html