Класс Policy
- java.lang.Object
-
- java.security.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.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Он может отличаться от порядка поставщиков, возвращаемого методом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