Класс 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.
- См. также:
-
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,
Provider provider) Возвращает объект Policy указанного типа. |
static Policy |
getInstance(String type,
Policy.Parameters params,
String provider) Возвращает объект Policy указанного типа. |
Policy.Parameters |
getParameters() Возвращает параметры Policy. |
PermissionCollection |
getPermissions(CodeSource codesource) Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному CodeSource. |
PermissionCollection |
getPermissions(ProtectionDomain domain) Возвращает объект PermissionCollection, содержащий набор разрешений, предоставленных указанному ProtectionDomain. |
static Policy |
getPolicy() Возвращает установленный объект Policy. |
Provider |
getProvider() Возвращает поставщика этой Policy. |
String |
getType() Возвращает тип этой Policy. |
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().
- Параметры:
-
type- указанный тип Policy. Список стандартных типов Policy см. в разделе Policy документации Java Cryptography Architecture Standard Algorithm Name Documentation. -
params- параметры для Policy, которые могут быть null. - Возвращает:
- новый объект Policy.
- Исключения:
-
SecurityException- если у вызывающего объекта нет разрешения получить экземпляр Policy для указанного типа. -
NullPointerException- если указанный тип равен null. -
IllegalArgumentException- если указанные параметры не понятны реализации PolicySpi от выбранного поставщика. -
NoSuchAlgorithmException- если ни один поставщик не поддерживает реализацию PolicySpi для указанного типа. - Since:
- 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 Cryptography Architecture Standard Algorithm Name Documentation. -
params- параметры для Policy, которые могут быть null. -
provider- поставщик. - Возвращает:
- новый объект Policy.
- Исключения:
-
SecurityException- если у вызывающего объекта нет разрешения получить экземпляр Policy для указанного типа. -
NullPointerException- если указанный тип равен null. -
IllegalArgumentException- если указанный поставщик равен null или пуст, или если указанные параметры не понятны реализацией PolicySpi от указанного поставщика. -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности. -
NoSuchAlgorithmException- если указанный поставщик не поддерживает реализацию PolicySpi для указанного типа. - Since:
- 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 Cryptography Architecture Standard Algorithm Name Documentation. -
params- параметры для Policy, которые могут быть null. -
provider- поставщик. - Возвращает:
- новый объект Policy.
- Исключения:
-
SecurityException- если у вызывающего объекта нет разрешения получить экземпляр Policy для указанного типа. -
NullPointerException- если указанный тип равен null. -
IllegalArgumentException- если указанный поставщик равен null, или если указанные параметры не понятны реализацией PolicySpi от указанного поставщика. -
NoSuchAlgorithmException- если указанный поставщик не поддерживает реализацию PolicySpi для указанного типа. - Since:
- 1.6
- См. также:
Provider
getProvider
public Provider getProvider()
Возвращает поставщика этого объекта Policy.
У этого экземпляра Policy будет поставщик только в том случае, если он был получен посредством вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- поставщик этого объекта Policy или null.
- Since:
- 1.6
getType
public String getType()
Возвращает тип этого объекта Policy.
У этого экземпляра Policy будет тип только в том случае, если он был получен посредством вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- тип этого объекта Policy или null.
- Since:
- 1.6
getParameters
public Policy.Parameters getParameters()
Возвращает параметры Policy.
У этого экземпляра Policy будут параметры только в том случае, если он был получен посредством вызова Policy.getInstance. В противном случае этот метод возвращает null.
- Возвращает:
- параметры Policy или null.
- Since:
- 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.
- Since:
- 1.4
implies
public boolean implies(ProtectionDomain domain,
Permission permission) Вычисляет глобальную политику разрешений, предоставленных ProtectionDomain, и проверяет, предоставлено ли разрешение.
- Параметры:
-
domain- ProtectionDomain для проверки -
permission- объект Permission, подлежащий проверке на подмножество. - Возвращает:
- true, если "разрешение" является надлежащим подмножеством разрешения, предоставленного этому ProtectionDomain.
- Since:
- 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.