Spec-Zone.ru › OpenJDK 8

Класс URLPermission

  • java.lang.Object
    • java.security.Permission
      • java.net.URLPermission
Все реализованные интерфейсы:
Serializable, Guard

public final class URLPermission
extends Permission

Представляет разрешение на доступ к ресурсу или набору ресурсов, определенных заданным URL, и для заданного набора пользовательских методов запроса и заголовков запроса. Имя разрешения — это строка URL. Строка actions — это конкатенация методов запроса и заголовков запроса. Диапазон имен методов и заголовков не ограничен этим классом.

URL

Строка URL имеет следующий ожидаемый формат.

scheme : // authority [ / path ]
scheme обычно будет http или https, но не ограничен этим классом. authority задаётся как:
authority = [ userinfo @ ] hostrange [ : portrange ]
     portrange = portnumber | -portnumber | portnumber-[portnumber] | *
     hostrange = ([*.] dnsname) | IPv4address | IPv6address
dnsname — стандартное имя хоста или домена DNS, т.е. одна или несколько меток, разделенных точкой. IPv4address — стандартный литеральный IPv4-адрес, а IPv6address определяется в RFC 2732. Однако литеральные IPv6-адреса должны быть заключены в символы '[]'. Спецификация dnsname может быть предварена "*.", что означает, что имя будет соответствовать любому имени хоста, правые метки домена которого совпадают с этим именем. Например, "*.oracle.com" соответствует "foo.bar.oracle.com"

portrange используется для указания номера порта или ограниченного или неограниченного диапазона портов, к которым относится это разрешение. Если portrange отсутствует или недействителен, предполагается номер порта по умолчанию, если схема — http (по умолчанию 80) или https (по умолчанию 443). Для других схем по умолчанию не предполагается. Может быть указан символ подстановки, что означает все порты.

userinfo необязателен. Компонент userinfo, если он присутствует, игнорируется при создании URLPermission и не влияет на другие методы, определённые в этом классе.

Компонент path состоит из последовательности сегментов пути, разделённых символами '/'. path также может быть пустым. Путь задаётся аналогично пути в FilePermission. Существует три способа, как показано в следующих примерах:

Пример URL Описание
http://www.oracle.com/a/b/c.html URL, который идентифицирует конкретный (единичный) ресурс
http://www.oracle.com/a/b/* Символ '*' относится ко всем ресурсам в той же "папке" — другими словами, ко всем ресурсам с одинаковым количеством компонентов пути и которые отличаются только конечным компонентом пути, представленным символом '*'.
http://www.oracle.com/a/b/- Символ '-' относится ко всем ресурсам, рекурсивно находящимся ниже предыдущего пути (например, http://www.oracle.com/a/b/c/d/e.html соответствует этому примеру).

Символы '*' и '-' могут быть указаны только в последнем сегменте пути и должны быть единственными символами в этом сегменте. Любые компоненты запроса или фрагмента URL игнорируются при построении URLPermission.

В качестве особого случая принимаются URL вида "scheme:*", что означает любой URL данной схемы.

Компоненты scheme и authority строки URL обрабатываются без учёта регистра. Это означает equals(Object), hashCode() и implies(Permission) не учитывают регистр в этих компонентах. Если authority содержит литеральный IP-адрес, то адрес нормализуется для сравнения. Компонент path учитывает регистр.

Строка actions

Строка actions URLPermission представляет собой конкатенацию списка методов и списка заголовков запроса. Это списки разрешенных методов запроса и разрешенных заголовков запроса для разрешения (соответственно). Два списка разделены двоеточием ':' и элементы каждого списка разделяются запятыми. Вот несколько примеров:

"POST,GET,DELETE"
         "GET:X-Foo-Request,X-Bar-Request"
         "POST,GET:Header1,Header2"
Первый пример указывает методы: POST, GET и DELETE, но не указывает заголовков запроса. Второй пример указывает один метод запроса и два заголовка. Третий пример указывает два метода запроса и два заголовка.

Разделитель двоеточие не нужен, если список заголовков запроса пуст. В строке actions не допускаются пробелы. Строки action, предоставляемые конструкторам URLPermission, не учитывают регистр и нормализуются путём преобразования имён методов в верхний регистр, а имён заголовков — в формат, определенный в RFC2616 (строчные буквы с заглавной первой буквой каждого слова). В любой из списков может быть указан символ подстановки '*' , который обозначает все методы запроса или заголовки запроса соответственно.

Примечание. В зависимости от контекста использования некоторые методы запроса и заголовки могут быть разрешены всегда, а другие — никогда. Например, обработчик протокола HTTP может запретить устанавливать определенные заголовки, такие как Content-Length, кодом приложения, независимо от того, разрешает ли действующая политика безопасности их установку.

С тех пор:
1.8
См. также:
Формат сериализации

Конструкторы

Конструктор и описание
URLPermission(String url)

Создаёт URLPermission со строкой URL и неограниченными методами и заголовками запроса, вызывая двухаргументный конструктор следующим образом: URLPermission(url, "*:*")

URLPermission(String url, String actions)

Создаёт новый URLPermission из строки URL, разрешающий заданные методы запроса и устанавливаемые пользователем заголовки запроса.

Методы

Модификатор и тип Метод и описание
boolean equals(Object p)

Возвращает true, если this.getActions().equals(p.getActions()) и url p равен url этого объекта.

String getActions()

Возвращает нормализованный список методов и список заголовков запроса в формате:

int hashCode()

Возвращает хэш-код, вычисленный из хэш-кода строки actions и строки url.

boolean implies(Permission p)

Проверяет, подразумевает ли данное URLPermission указанное разрешение.

Методы, унаследованные от класса java.security.Permission

checkGuard, getName, newPermissionCollection, toString

Методы, унаследованные от класса java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

URLPermission

public URLPermission(String url,
                     String actions)

Создаёт новый URLPermission из строки url и задаёт разрешённые методы запроса и настраиваемые пользователем заголовки запроса. Имя разрешения — это строка url, с которой оно было создано. Внутренне используются только схема, авторитет и путь url. Любые фрагмент или компоненты запроса игнорируются. Строка действия разрешения указана выше.

Параметры:
url - строка url
actions - строка действий
Исключения:
IllegalArgumentException - если url некорректен или если actions содержит пробелы.

URLPermission

public URLPermission(String url)

Создаёт URLPermission с заданной строкой url и без ограничений на методы и заголовки запросов, вызвав конструктор с двумя аргументами следующим образом: URLPermission(url, "*:*")

Параметры:
url - строка url
Исключения:
IllegalArgumentException - если url не соответствует валидному URI

Методы

getActions

public String getActions()

Возвращает нормализованный список методов и список заголовков запроса в формате:

"method-names : header-names"

где method-names — список методов, разделённых запятыми, а header-names — список разрешённых заголовков, разделённых запятыми. В возвращаемой строке нет пробелов. Если header-names пусто, то разделитель двоеточие отсутствует.

Определено в:
getActions в классе Permission
Возвращает:
действия данного разрешения.

implies

public boolean implies(Permission p)

Проверяет, подразумевает ли данное URLPermission заданное разрешение. Конкретно, выполняются следующие проверки, как если бы они выполнялись в следующем порядке:

  • если 'p' не является экземпляром URLPermission, вернуть false
  • если какой-либо из методов p отсутствует в списке методов этого, и если список методов этого не равен "*", вернуть false.
  • если какой-либо из заголовков p отсутствует в списке заголовков запроса этого, и если список заголовков запроса этого не равен "*", вернуть false.
  • если схема url этого не равна схеме url p, вернуть false
  • если специфическая часть схемы url этого равна "*", вернуть true
  • если набор хостов, определённых диапазоном хостов url p, не является подмножеством диапазона хостов url этого, вернуть false. Например, "*.foo.oracle.com" является подмножеством "*.oracle.com". "foo.bar.oracle.com" не является подмножеством "*.foo.oracle.com"
  • если диапазон портов, определённый url p, не является подмножеством диапазона портов, определённого url этого, вернуть false.
  • если путь или пути, указанные в url p, содержатся в наборе путей, указанных в url этого, вернуть true
  • в противном случае вернуть false

Ниже приведены некоторые примеры того, как сопоставляются пути:

путь этого путь p совпадение
/a/b /a/b да
/a/b/* /a/b/c да
/a/b/* /a/b/c/d нет
/a/b/- /a/b/c/d да
/a/b/- /a/b/c/d/e да
/a/b/- /a/b/c/* да
/a/b/* /a/b/c/- нет
Определено в:
implies в классе Permission
Параметры:
p - разрешение для проверки.
Возвращает:
true, если указанное разрешение подразумевается этим объектом, false — в противном случае.

equals

public boolean equals(Object p)

Возвращает true, если this.getActions().equals(p.getActions()) и url p равен url этого. В противном случае возвращает false.

Определено в:
equals в классе Permission
Параметры:
p - объект, с которым мы проверяем равенство этому объекту.
Возвращает:
true, если оба объекта Permission эквивалентны.
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Возвращает хэш-код, рассчитанный из хэш-кода строки действий и строки url.

Определено в:
hashCode в классе Permission
Возвращает:
значение хэш-кода для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API