Spec-Zone.ru › OpenJDK 17

Класс Subject

java.lang.Object
javax.security.auth.Subject
Все реализованные интерфейсы:
Serializable
public final class Subject extends Object implements Serializable

Объект Subject представляет собой группу связанной информации для одного сущности, например, человека. Такая информация включает идентификаторы субъекта, а также его атрибуты безопасности (например, пароли и криптографические ключи).

Субъекты могут потенциально иметь несколько идентификаторов. Каждый идентификатор представлен как Principal в Subject. Принципы просто связывают имена с Subject. Например, Subject , который оказывается человеком, Алисой, может иметь двух принципов: один, который связывает «Алиса Бар», имя в её водительском удостоверении, с Subject, и другой, который связывает «999-99-9999», номер её студенческого билета, с Subject. Оба принципа относятся к одному и тому же Subject, хотя каждый имеет другое имя.

Субъект также может владеть атрибутами безопасности, которые называются данными. Конфиденциальные данные, требующие особой защиты, такие как закрытые криптографические ключи, хранятся в частном наборе данных Set. Данные, предназначенные для совместного использования, такие как сертификаты открытых ключей или билеты сервера Kerberos, хранятся в общедоступном наборе данных Set. Для доступа и изменения различных наборов данных требуются различные разрешения.

Чтобы получить всех принципов, связанных с Subject, вызовите метод getPrincipals. Чтобы получить все общедоступные или частные данные, принадлежащие Subject, вызовите метод getPublicCredentials или getPrivateCredentials соответственно. Чтобы изменить возвращенные наборы принципов и данных, используйте методы, определенные в классе Set. Например:

      Subject subject;
      Principal principal;
      Object credential;

      // add a Principal and credential to the Subject
      subject.getPrincipals().add(principal);
      subject.getPublicCredentials().add(credential);
 

Этот Subject класс реализует Serializable. В то время как принципы, связанные с Subject сериализуются, данные, связанные с Subject нет. Обратите внимание, что класс java.security.Principal не реализует Serializable. Поэтому все конкретные реализации Principal , связанные с субъектами, должны реализовывать Serializable.

С момента:
1.4
См. также:
  • Principal
  • DomainCombiner
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
Subject()
Создает экземпляр Subject с пустым набором принципов и пустыми наборами общедоступных и частных данных.
Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials)
Создает экземпляр Subject с принципами и данными.

Краткое описание методов

Модификатор и тип Метод Описание
static <T> T doAs(Subject subject, PrivilegedAction<T> action)
Выполняет работу как конкретный Subject.
static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action)
Выполняет работу как конкретный Subject.
static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc)
Устаревший, для удаления: Элемент API может быть удален в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии.
static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc)
Устаревший, для удаления: Элемент API может быть удален в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии.
boolean equals(Object o)
Сравнивает указанный объект с этим Subject на равенство.
Set<Principal> getPrincipals()
Возвращает набор принципов, связанных с этим Subject.
<T extends Principal>
Set<T>
getPrincipals(Class<T> c)
Возвращает набор принципов, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.
Set<Object> getPrivateCredentials()
Возвращает набор частных данных, хранящихся этим Subject.
<T> Set<T> getPrivateCredentials(Class<T> c)
Возвращает набор частных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.
Set<Object> getPublicCredentials()
Возвращает набор общедоступных данных, хранящихся этим Subject.
<T> Set<T> getPublicCredentials(Class<T> c)
Возвращает набор общедоступных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.
static Subject getSubject(AccessControlContext acc)
Устаревший, для удаления: Элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который, в сочетании с менеджером безопасности, устарел и может быть удален в будущей версии.
int hashCode()
Возвращает хэш-код для этого Subject.
boolean isReadOnly()
Определяет, является ли этот Subject только для чтения.
void setReadOnly()
Устанавливает этот Subject в режим только для чтения.
String toString()
Возвращает строковое представление этого Subject.

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

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

Подробное описание конструкторов

Предмет

public Subject()
Создать экземпляр Subject с пустым Set принципалов и пустыми наборами общественных и частных учетных данных.

Новые наборы проверяют, установлен ли для этого Subject режим только для чтения, прежде чем разрешить последующие изменения. Созданные наборы также предотвращают незаконные изменения, гарантируя, что у вызывающих сторон есть достаточные разрешения. Эти наборы также запрещают нулевые элементы, и попытки добавить или запросить нулевой элемент приведут к NullPointerException.

Для изменения набора принципалов вызывающая сторона должна иметь AuthPermission("modifyPrincipals"). Для изменения набора общественных учетных данных вызывающая сторона должна иметь AuthPermission("modifyPublicCredentials"). Для изменения набора частных учетных данных вызывающая сторона должна иметь AuthPermission("modifyPrivateCredentials").

Предмет

public Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials)
Создать экземпляр Subject с принципалами и учетными данными.

Принципалы и учетные данные из указанных наборов копируются в новые наборы. Эти новые наборы проверяют, установлен ли для этого Subject режим только для чтения, прежде чем разрешить последующие изменения. Созданные наборы также предотвращают незаконные изменения, гарантируя, что у вызывающих сторон есть достаточные разрешения. Эти наборы также запрещают нулевые элементы, и попытки добавить или запросить нулевой элемент приведут к NullPointerException.

Для изменения набора принципалов вызывающая сторона должна иметь AuthPermission("modifyPrincipals"). Для изменения набора общественных учетных данных вызывающая сторона должна иметь AuthPermission("modifyPublicCredentials"). Для изменения набора частных учетных данных вызывающая сторона должна иметь AuthPermission("modifyPrivateCredentials").

Параметры:
readOnly - true, если Subject должен быть только для чтения, и false в противном случае.
principals - набор Set принципалов, которые должны быть связаны с этим Subject.
pubCredentials - набор Set общественных учетных данных, которые должны быть связаны с этим Subject.
privCredentials - набор Set частных учетных данных, которые должны быть связаны с этим Subject.
Исключения:
NullPointerException - если указанные principals, pubCredentials, или privCredentials являются null, или существует нулевое значение в любом из этих трех наборов.

Подробное описание методов

setReadOnly

public void setReadOnly()
Установить для этого Subject режим только для чтения.

Изменения (добавления и удаления) для Principal Set и наборов учетных данных этого предмета будут запрещены. Операция destroy с учетными данными этого предмета по-прежнему будет разрешена.

Повторные попытки изменить наборы Principal и учетных данных предмета приведут к выбрасыванию IllegalStateException. Кроме того, после того, как Subject станет только для чтения, его нельзя будет снова сделать доступным для записи.

Исключения:
SecurityException - если установлен менеджер безопасности и у вызывающей стороны нет разрешения AuthPermission("setReadOnly") для установки для этого Subject режима только для чтения.

isReadOnly

public boolean isReadOnly()
Опрос, является ли этот Subject только для чтения.
Возвращает:
true, если этот Subject только для чтения, в противном случае false.

getSubject

@Deprecated(since="17", forRemoval=true) public static Subject getSubject(AccessControlContext acc)
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который в сочетании с менеджером безопасности Security Manager устарел и может быть удален в будущей версии. Однако получение субъекта полезно независимо от менеджера безопасности, поэтому замена этого метода может быть добавлена в будущей версии.
Получить Subject, связанный с предоставленным AccessControlContext.

AccessControlContext может содержать множество субъектов (из вложенных вызовов doAs). В этом случае возвращается самый последний Subject , связанный с AccessControlContext.

Параметры:
acc - AccessControlContext для извлечения Subject.
Возвращает:
Subject , связанный с предоставленным AccessControlContext, или null , если с предоставленным AccessControlContext нет связанного Subject.
Исключения:
SecurityException - если установлен менеджер безопасности и у вызывающей стороны нет разрешения AuthPermission("getSubject") для получения Subject.
NullPointerException - если предоставленный AccessControlContext является null.

doAs

public static <T> T doAs(Subject subject, PrivilegedAction<T> action)
Выполнить работу как конкретный Subject.

Этот метод сначала извлекает текущий AccessControlContext потока через AccessController.getContext, затем создает новый AccessControlContext с извлеченным контекстом вместе с новым SubjectDomainCombiner (созданным с помощью предоставленного Subject). Наконец, этот метод вызывает AccessController.doPrivileged, передавая ему предоставленный PrivilegedAction, а также недавно созданный AccessControlContext.

Параметры типа:
T - тип значения, возвращаемого методом run PrivilegedAction.
Параметры:
subject - Subject , от имени которого будет выполняться указанное action . Этот параметр может быть null.
action - код, который должен быть выполнен от имени указанного Subject.
Возвращает:
значение, возвращенное методом run PrivilegedAction.
Исключения:
NullPointerException - если PrivilegedAction является null.
SecurityException - если установлен менеджер безопасности и у вызывающей стороны нет разрешения AuthPermission("doAs") для вызова этого метода.

doAs

public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException
Выполнить работу как конкретный Subject.

Этот метод сначала извлекает текущий AccessControlContext потока через AccessController.getContext, затем создает новый AccessControlContext с извлеченным контекстом вместе с новым SubjectDomainCombiner (созданным с помощью предоставленного Subject). Наконец, этот метод вызывает AccessController.doPrivileged, передавая ему предоставленный PrivilegedExceptionAction, а также недавно созданный AccessControlContext.

Параметры типа:
T - тип значения, возвращаемого методом run PrivilegedExceptionAction.
Параметры:
subject - Subject , от имени которого будет выполняться указанное action . Этот параметр может быть null.
action - код, который должен быть выполнен от имени указанного Subject.
Возвращает:
значение, возвращенное методом run PrivilegedExceptionAction.
Исключения:
PrivilegedActionException - если метод PrivilegedExceptionAction.run выбросил исключение checked.
NullPointerException - если указанный PrivilegedExceptionAction является null.
SecurityException - если установлен менеджер безопасности и у вызывающей стороны нет разрешения AuthPermission("doAs") для вызова этого метода.

doAsPrivileged

@Deprecated(since="17", forRemoval=true) public static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc)
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод полезен только в сочетании с Security Manager, который устарел и может быть удален в будущей версии. Следовательно, этот метод также устарел и может быть удален. Замены для Security Manager или этого метода нет.
Выполнить работу с привилегиями как конкретный Subject.

Этот метод ведет себя точно так же, как Subject.doAs, за исключением того, что вместо извлечения текущего AccessControlContext потока он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext является null, этот метод создает новый AccessControlContext с пустым набором ProtectionDomains.

Параметры типа:
T - тип значения, возвращаемого методом run PrivilegedAction.
Параметры:
subject - Subject , от имени которого будет выполняться указанное action . Этот параметр может быть null.
action - код, который должен быть выполнен от имени указанного Subject.
acc - AccessControlContext , который должен быть привязан к указанному предмету и действию.
Возвращает:
значение, возвращенное методом run PrivilegedAction.
Исключения:
NullPointerException - если PrivilegedAction является null.
SecurityException - если установлен менеджер безопасности и у вызывающей стороны нет разрешения AuthPermission("doAsPrivileged") для вызова этого метода.

doAsPrivileged

@Deprecated(since="17", forRemoval=true) public static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException
Устарело, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и подлежит удалению в будущей версии. Вследствие этого, этот метод также устарел и подлежит удалению. Замены для менеджера безопасности или этого метода нет.
Выполнить привилегированную работу от имени определённого Subject.

Этот метод ведет себя точно так же, как Subject.doAs, за исключением того, что вместо получения текущего AccessControlContext потока он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext является null, этот метод создаёт новый AccessControlContext с пустым набором ProtectionDomains.

Type Parameters:
T - тип значения, возвращаемого методом run PrivilegedExceptionAction.
Parameters:
subject - Subject от имени которого будет выполняться указанный action. Этот параметр может быть null.
action - код, который должен быть выполнен от имени указанного Subject.
acc - AccessControlContext, который должен быть привязан к указанному subject и action.
Returns:
значение, возвращаемое методом run PrivilegedExceptionAction.
Throws:
PrivilegedActionException - если метод PrivilegedExceptionAction.run выбросил проверяемое исключение.
NullPointerException - если указанный PrivilegedExceptionAction является null.
SecurityException - если установлен менеджер безопасности и у вызывающего объекта нет разрешения AuthPermission("doAsPrivileged") на вызов этого метода.

getPrincipals

public Set<Principal> getPrincipals()
Возвращает Set объектов Principals, связанных с этим Subject. Каждый Principal представляет идентичность этого Subject.

Возвращаемый Set подкрепляется внутренней коллекцией Principal объекта Subject Set. Любые изменения в возвращаемом Set влияют на внутреннюю коллекцию Principal Set также.

Если установлен менеджер безопасности, вызывающий объект должен обладать разрешением AuthPermission("modifyPrincipals") для изменения возвращаемого набора, в противном случае будет выброшено исключение SecurityException.

Returns:
Set объектов Principals, связанных с этим Subject.

getPrincipals

public <T extends Principal> Set<T> getPrincipals(Class<T> c)
Возвращает Set объектов Principals, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.

Возвращаемый Set не подкрепляется внутренней коллекцией Principal объекта Subject Set. Для каждого вызова метода создаётся новый Set. Изменения в возвращаемом Set не будут влиять на внутреннюю коллекцию Principal Set.

Type Parameters:
T - тип класса, описываемого c
Parameters:
c - возвращаемый Set объектов Principals будет содержать только экземпляры этого класса.
Returns:
Set объектов Principals, которые являются экземплярами указанного Class.
Throws:
NullPointerException - если указанный Class является null.

getPublicCredentials

public Set<Object> getPublicCredentials()
Возвращает Set public Credentials, содержащихся в этом Subject.

Возвращаемый Set подкрепляется внутренней коллекцией public Credentials Set объекта Subject. Любые изменения в возвращаемом Set влияют на внутреннюю коллекцию public Credentials Set также.

Если установлен менеджер безопасности, вызывающий объект должен обладать разрешением AuthPermission("modifyPublicCredentials") для изменения возвращаемого набора, в противном случае будет выброшено исключение SecurityException.

Returns:
Set public Credentials, содержащихся в этом Subject.

getPrivateCredentials

public Set<Object> getPrivateCredentials()
Возвращает Set private Credentials, содержащихся в этом Subject.

Возвращаемый Set подкрепляется внутренней коллекцией private Credentials Set объекта Subject. Любые изменения в возвращаемом Set влияют на внутреннюю коллекцию private Credentials Set также.

Если установлен менеджер безопасности, вызывающий объект должен обладать разрешением AuthPermission("modifyPrivateCredentials") для изменения возвращаемого набора, в противном случае будет выброшено исключение SecurityException.

Во время итерации по Set, если менеджер безопасности установлен и у вызывающего объекта нет разрешения PrivateCredentialPermission для доступа к конкретной Credential, будет выброшено исключение SecurityException. Однако итерация продолжит продвижение к следующему элементу в Set.

Returns:
Set private Credentials, содержащихся в этом Subject.

getPublicCredentials

public <T> Set<T> getPublicCredentials(Class<T> c)
Возвращает Set public Credentials, ассоциированные с этим Subject, которые являются экземплярами или подклассами указанного Class.

Возвращаемый Set не подкрепляется внутренней коллекцией public Credentials Set объекта Subject. Для каждого вызова метода создаётся новый Set. Изменения в возвращаемом Set не будут влиять на внутреннюю коллекцию public Credentials Set.

Type Parameters:
T - тип класса, описываемого c
Parameters:
c - возвращаемый Set public Credentials будет содержать только экземпляры этого класса.
Returns:
Set public Credentials, которые являются экземплярами указанного Class.
Throws:
NullPointerException - если указанный Class является null.

getPrivateCredentials

public <T> Set<T> getPrivateCredentials(Class<T> c)
Возвращает Set private Credentials, ассоциированные с этим Subject, которые являются экземплярами или подклассами указанного Class.

Если установлен менеджер безопасности, вызывающий объект должен обладать разрешением PrivateCredentialPermission для доступа ко всем запрошенным Credentials, в противном случае будет выброшено исключение SecurityException.

Возвращаемый Set не подкрепляется внутренней коллекцией private Credentials Set объекта Subject. Для каждого вызова метода создаётся новый Set. Изменения в возвращаемом Set не будут влиять на внутреннюю коллекцию private Credentials Set.

Type Parameters:
T - тип класса, описываемого c
Parameters:
c - возвращаемый Set private Credentials будет содержать только экземпляры этого класса.
Returns:
Set private Credentials, которые являются экземплярами указанного Class.
Throws:
NullPointerException - если указанный Class является null.

equals

public boolean equals(Object o)
Сравнивает указанный объект с этим Subject на равенство. Возвращает true, если заданный объект также является объектом Subject и два объекта Subject эквивалентны. Более формально, два объекта Subject равны, если их наборы Principal и Credential равны.
Overrides:
equals в классе Object
Parameters:
o - Объект, сравниваемый на равенство с этим Subject.
Returns:
true, если указанный объект равен этому Subject.
Throws:
SecurityException - если установлен менеджер безопасности и у вызывающего объекта нет разрешения PrivateCredentialPermission на доступ к private credentials этого Subject или предоставленного Subject.
See Also:
  • Object.hashCode()
  • HashMap

toString

public String toString()
Возвращает строковое представление этого Subject.
Overrides:
toString в классе Object
Returns:
строковое представление этого Subject.

hashCode

public int hashCode()
Возвращает хеш-код для этого Subject.
Overrides:
hashCode в классе Object
Returns:
хеш-код для этого Subject.
Throws:
SecurityException - если установлен менеджер безопасности и у вызывающего объекта нет разрешения PrivateCredentialPermission доступа к частным учетным данным этого субъекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2021, 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/17/docs/api/java.base/javax/security/auth/Subject.html

Spec-Zone.ru

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