Класс Policy
- java.lang.Object
-
- javax.security.auth.Policy
Устаревший.
с версии JDK 1.4 -- Заменён на java.security.Policy. java.security.Policy имеет метод:
public PermissionCollection getPermissions
(java.security.ProtectionDomain pd) и ProtectionDomain имеет конструктор: public ProtectionDomain
(CodeSource cs,
PermissionCollection permissions,
ClassLoader loader,
Principal[] principals) Эти два API предоставляют вызывающим сторонам возможность запросить записи разрешений, основанные на субъекте. @Deprecated public abstract class Policy extends Object
Это абстрактный класс для представления системной политики для авторизации на основе субъекта. Реализация подкласса этого класса предоставляет возможность указать основанный на субъекте механизм контроля доступа Policy.
Объект Policy можно запросить для набора разрешений, предоставленных коду, выполняемому как Principal следующим образом:
policy = Policy.getPolicy();
PermissionCollection perms = policy.getPermissions(subject,
codeSource); Объект Policy обращается к локальной политике и возвращает соответствующий объект Permissions с разрешениями, предоставленными субъектам, связанным с предоставленным субъектом и коду, указанному предоставленным codeSource. Объект Policy содержит следующую информацию. Обратите внимание, что этот пример демонстрирует только синтаксис по умолчанию Policy реализации. Реализации подклассов этого класса могут реализовывать альтернативный синтаксис и могут извлекать Policy из любого источника, такого как файлы, базы данных или серверы.
Каждая запись в Policy представлена как запись grant. Каждая запись grant указывает тройку codebase, code signers и Principals, а также разрешения, предоставленные этой тройке.
grant CodeBase ["URL"], Signedby ["signers"],
Principal [Principal_Class] "Principal_Name" {
Permission Permission_Class ["Target_Name"]
[, "Permission_Actions"]
[, signedBy "SignerName"];
}; Компоненты CodeBase и Signedby тройки имени/значения являются необязательными. Если они отсутствуют, то совпадет любой codebase, и любой подписывающий (включая неподписанный код) будет соответствовать. Например, grant CodeBase "foo.com", Signedby "foo",
Principal com.sun.security.auth.SolarisPrincipal "duke" {
permission java.io.FilePermission "/home/duke", "read, write";
}; Эта запись grant указывает, что код из "foo.com", подписанный "foo", и выполняемый как SolarisPrincipal с именем duke, имеет одно Permission. Это Permission разрешает исполняемому коду чтение и запись файлов в каталоге "/home/duke". Чтобы "выполняться" как определенный Principal, код вызывает метод Subject.doAs(subject, ...). После вызова этого метода код выполняется как все субъекты, связанные с указанным Subject. Обратите внимание, что это Policy (и разрешения, предоставленные в этом Policy) становятся эффективными только после вызова Subject.doAs.
Несколько субъектов могут быть перечислены в одной записи grant. Все субъекты в записи grant должны быть связаны с Subject предоставленным Subject.doAs для того, чтобы этому Subject были предоставлены указанные разрешения.
grant Principal com.sun.security.auth.SolarisPrincipal "duke",
Principal com.sun.security.auth.SolarisNumericUserPrincipal "0" {
permission java.io.FilePermission "/home/duke", "read, write";
permission java.net.SocketPermission "duke.com", "connect";
}; Эта запись предоставляет любому коду, выполняемому как "duke" и "0", разрешение на чтение и запись файлов в домашнем каталоге duke, а также разрешение на установление сокет-соединений с "duke.com". Обратите внимание, что записи grant, не основанные на субъектах, не допускаются в этом Policy. Поэтому записи разрешений, такие как:
grant CodeBase "foo.com", Signedby "foo" {
permission java.io.FilePermission "/tmp/scratch", "read, write";
}; отклоняются. Такие разрешения должны быть указаны в java.security.Policy. Реализация Policy по умолчанию может быть изменена путём установки значения свойства безопасности auth.policy.provider на полное имя класса реализации Policy.
- См. также:
security properties
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
Policy() Устаревший. Единственный конструктор. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
abstract PermissionCollection |
getPermissions(Subject subject,
CodeSource cs) Устаревший. Получить разрешения, предоставленные субъектам, связанным с указанным |
static Policy |
getPolicy() Устаревший. Возвращает установленный объект Policy. |
abstract void |
refresh() Устаревший. Обновить и перезагрузить политику. |
static void |
setPolicy(Policy policy) Устаревший. Устанавливает системный объект Policy. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
Policy
protected Policy()
Устаревший.
Единственный конструктор. (Для вызова конструкторами подклассов, как правило, неявно.)
Методы
getPolicy
public static Policy getPolicy()
Устаревший.
Возвращает установленный объект Policy. Этот метод сначала вызывает SecurityManager.checkPermission с разрешением AuthPermission("getPolicy"), чтобы убедиться, что у вызывающей стороны есть разрешение на получение объекта Policy.
- Возвращает:
- установленный Policy. Возвращаемое значение не может быть
null. - Исключения:
-
SecurityException- если текущий поток не имеет разрешения на получение объекта Policy. - См. также:
setPolicy(javax.security.auth.Policy)
setPolicy
public static void setPolicy(Policy policy)
Устаревший.
Устанавливает системный объект Policy. Этот метод сначала вызывает SecurityManager.checkPermission с разрешением AuthPermission("setPolicy"), чтобы убедиться, что у вызывающей стороны есть разрешение на установку политики.
- Параметры:
-
policy- новый системный объект Policy. - Исключения:
-
SecurityException- если текущий поток не имеет разрешения на установку политики. - См. также:
getPolicy()
getPermissions
public abstract PermissionCollection getPermissions(Subject subject,
CodeSource cs) Устаревший.
Получить разрешения, предоставленные субъектам, связанным с указанным CodeSource.
- Параметры:
-
subject-Subject, чьи связанные субъекты в сочетании с предоставленнымCodeSource, определяют разрешения, возвращаемые этим методом. Этот параметр может бытьnull. -
cs- код, заданный егоCodeSource, который, в сочетании с предоставленнымSubject, определяет разрешения, возвращаемые этим методом. Этот параметр может бытьnull. - Возвращает:
- коллекция разрешений, предоставленных всем
Subjectи коду, указанному в предоставленных параметрах subject и cs.
refresh
public abstract void refresh()
Устаревший.
Обновить и перезагрузить политику.
Этот метод заставляет этот объект обновлять/перезагружать текущую политику. Это зависит от реализации. Например, если объект политики хранится в файле, вызов refresh приведет к повторному чтению файла.
- Исключения:
-
SecurityException- если у вызывающей стороны нет разрешения на обновление политики.
© 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.