Spec-Zone.ru › OpenJDK 21

Класс 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, даже если у каждого есть другое имя.

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

Чтобы получить все Принципы, связанные с Subject, вызовите метод getPrincipals. Чтобы получить все публичные или частные учетные данные, принадлежащие Subject, вызовите метод getPublicCredentials или getPrivateCredentials соответственно. Чтобы изменить возвращенные Set Принципов и учетных данных, используйте методы, определенные в классе 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.

Since:
1.4
See Also:
  • Principal
  • DomainCombiner
  • Форматированный вывод

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

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

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

Модификатор и тип Метод Описание
static <T> T callAs(Subject subject, Callable<T> action)
Выполняет Callable с subject в качестве текущего объекта.
static Subject current()
Возвращает текущий объект.
static <T> T doAs(Subject subject, PrivilegedAction<T> action)
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который совместно с менеджером безопасности устарел и подлежит удалению в будущей версии.
static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action)
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который совместно с менеджером безопасности устарел и подлежит удалению в будущей версии.
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()
Возвращает Set принципалов, связанных с этим Subject.
<T extends Principal>
Set<T>
getPrincipals(Class<T> c)
Возвращает Set принципалов, связанных с этим Subject и являющихся экземплярами или подклассами указанного Class.
Set<Object> getPrivateCredentials()
Возвращает Set частных учетных данных, хранящихся в этом Subject.
<T> Set<T> getPrivateCredentials(Class<T> c)
Возвращает Set частных учетных данных, связанных с этим Subject и являющихся экземплярами или подклассами указанного Class.
Set<Object> getPublicCredentials()
Возвращает Set публичных учетных данных, хранящихся в этом Subject.
<T> Set<T> getPublicCredentials(Class<T> c)
Возвращает Set публичных учетных данных, связанных с этим 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, который вместе с менеджером безопасности, устарел и подлежит удалению в будущей версии. Однако получение объекта Subject полезно независимо от менеджера безопасности. Поэтому был добавлен заменитель API под названием current(), который может быть использован для получения текущего субъекта.
Получить Subject , связанный с предоставленным AccessControlContext.

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

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

current

public static Subject current()
Возвращает текущий субъект.

Текущий субъект устанавливается методом callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>). Когда вызывается callAs(subject, action), action выполняется с subject в качестве текущего субъекта, который можно получить с помощью этого метода. После завершения action, текущий субъект сбрасывается до своего предыдущего значения. Текущий субъект равен null до первого вызова callAs().

Примечание об реализации:
Этот метод возвращает то же значение, что и Subject.getSubject(AccessController.getContext()). Это сохраняет совместимость с кодом, который может по-прежнему вызывать doAs для установки субъекта в AccessControlContext. Это поведение может измениться в будущей версии.
Возвращает:
текущий субъект или null в случае, если текущий субъект не установлен или текущий субъект установлен в null.
С:
18
См. также:
  • callAs(Subject, Callable)

callAs

public static <T> T callAs(Subject subject, Callable<T> action) throws CompletionException
Выполняет Callable с subject в качестве текущего субъекта.
Примечание об реализации:
Этот метод вызывает Subject.doAs(subject, altAction), который сохраняет субъект в новой AccessControlContext, где altAction.run() эквивалентно action.call(), а выброшенное исключение изменяется в соответствии со спецификацией данного метода. Это сохраняет совместимость с кодом, который может по-прежнему вызывать getSubject(AccessControlContext), извлекающий субъект из AccessControlContext. Это поведение может измениться в будущей версии.
Параметры типа:
T - тип значения, возвращаемого методом call класса action
Параметры:
subject - Subject, от имени которого будет выполняться указанный action. Этот параметр может быть null.
action - код, который должен быть выполнен с subject в качестве текущего субъекта. Не должен быть null.
Возвращаемое значение:
значение, возвращаемое методом call класса action
Исключения:
NullPointerException - если action является null
CompletionException - если action.call() вызывает исключение. Причина CompletionException устанавливается в исключение, выброшенное action.call().
Начиная с:
18
См. также:
  • current()

doAs

@Deprecated(since="18", forRemoval=true) public static <T> T doAs(Subject subject, PrivilegedAction<T> action)
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который в сочетании с менеджером безопасности, устарел и подлежит удалению в будущей версии. Однако выполнение работы как Subject полезно независимо от менеджера безопасности. Поэтому был добавлен заменяющий API под названием callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>), который можно использовать для выполнения той же работы.
Выполнение работы от имени конкретного Subject.

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

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

doAs

@Deprecated(since="18", forRemoval=true) public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод зависит от AccessControlContext, который в сочетании с менеджером безопасности, устарел и подлежит удалению в будущей версии. Однако выполнение работы от имени Subject полезно независимо от менеджера безопасности. Таким образом, был добавлен заменяющий API с именем callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>), который может использоваться для выполнения той же работы.
Выполнение работы от имени конкретного Subject.

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

Type Parameters:
T - тип значения, возвращаемого методом run PrivilegedExceptionAction.
Parameters:
subject - Subject, от имени которого будет выполняться указанный action. Этот параметр может быть null.
action - код, который должен быть выполнен от имени указанного Subject.
Returns:
значение, возвращаемое методом run PrivilegedExceptionAction.
Throws:
PrivilegedActionException - если метод PrivilegedExceptionAction.run выбрасывает проверенное исключение.
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 может быть удален в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. Следовательно, и этот метод устарел и также может быть удален. Замены менеджера безопасности или этого метода нет.
Выполнение привилегированной работы от имени конкретного Subject.

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

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

getPrincipals

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

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

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

Возвращает:
набор Принципалов, связанных с этим субъектом.

getPrincipals

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

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

Параметры типа:
T - тип класса, представленного принципалом
Параметры:
c - возвращаемый набор принципалов будет содержать только экземпляры этого класса.
Возвращает:
набор Принципалов, которые являются экземплярами указанного класса.
Исключения:
NullPointerException - если указанный класс является невалидным.

getPublicCredentials

public Set<Object> getPublicCredentials()
Возвращает Set набора общедоступных учетных данных, хранящихся в этом Subject.

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

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

Returns:
набор Set общедоступных учетных данных, хранящихся в этом Subject.

getPrivateCredentials

public Set<Object> getPrivateCredentials()
Возвращает Set набора закрытых учетных данных, хранящихся в этом Subject.

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

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

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

Returns:
набор Set закрытых учетных данных, хранящихся в этом Subject.

getPublicCredentials

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

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

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

getPrivateCredentials

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

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

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

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

equals

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

toString

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

hashCode

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

© 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/javax/security/auth/Subject.html

Spec-Zone.ru

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