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