Spec-Zone.ru › OpenJDK 8

Класс Subject

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

public final class Subject
extends Object
implements Serializable

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

Субъекты могут потенциально иметь несколько идентификаторов. Каждый идентификатор представлен как Principal в рамках 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.

См. также:
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)

Выполняет привилегированную работу как конкретный Subject.

static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc)

Выполняет привилегированную работу как конкретный Subject.

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)

Получает Subject, связанное с предоставленным AccessControlContext.

int hashCode()

Возвращает хэш-код для этого Subject.

boolean isReadOnly()

Определяет, является ли этот Subject только для чтения.

void setReadOnly()

Устанавливает, что этот Subject является только для чтения.

String toString()

Возвращает строковое представление этого Subject.

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

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

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

Subject

public Subject()

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

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

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

Subject

public Subject(boolean readOnly,
               Set<? extends Principal> principals,
               Set<?> pubCredentials,
               Set<?> privCredentials)

Создайте экземпляр Subject с принципалами и учетными данными.

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

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

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

Методы

setReadOnly

public void setReadOnly()

Установить этот Subject только для чтения.

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

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

Throws:
SecurityException - если у вызывающего объекта нет разрешения на установку этого Subject только для чтения.

isReadOnly

public boolean isReadOnly()

Запрос, является ли этот Subject только для чтения.

Returns:
true, если этот Subject только для чтения, false в противном случае.

getSubject

public static Subject getSubject(AccessControlContext acc)

Получить Subject , связанный с предоставленным AccessControlContext.

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

Parameters:
acc - AccessControlContext для получения Subject.
Returns:
связанный с предоставленным AccessControlContext, или null если с предоставленным AccessControlContext не связан ни один Subject.
Throws:
SecurityException - если у вызывающего объекта нет разрешения получить 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.

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

doAs

public static <T> T doAs(Subject subject,
                         PrivilegedExceptionAction<T> action)
                  throws PrivilegedActionException

Выполнение работы от имени конкретного 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 - если у вызывающего объекта нет разрешения вызвать этот метод.

doAsPrivileged

public static <T> T doAsPrivileged(Subject subject,
                                   PrivilegedAction<T> action,
                                   AccessControlContext acc)

Выполнение привилегированной работы от имени конкретного 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 - если у вызывающего объекта нет разрешения вызвать этот метод.

doAsPrivileged

public static <T> T doAsPrivileged(Subject subject,
                                   PrivilegedExceptionAction<T> action,
                                   AccessControlContext acc)
                            throws PrivilegedActionException

Выполнение привилегированной работы от имени конкретного 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 - если у вызывающего объекта нет разрешения вызвать этот метод.

getPrincipals

public Set<Principal> getPrincipals()

Возвращает Set принципалов, связанных с этим Subject. Каждый Principal представляет собой идентификатор для этого Subject.

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

Returns:
The Set принципалов, связанных с этим Subject.

getPrincipals

public <T extends Principal> Set<T> getPrincipals(Class<T> c)

Возвращает Set объектов Principals, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.

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

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

getPublicCredentials

public Set<Object> getPublicCredentials()

Возвращает Set общедоступных идентификационных данных, хранящихся в этом Subject.

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

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

getPrivateCredentials

public Set<Object> getPrivateCredentials()

Возвращает Set закрытых идентификационных данных, хранящихся в этом Subject.

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

Для доступа к идентификационным данным в возвращаемом Set, или для их изменения, требуется разрешение у вызывающей стороны. Если у вызывающей стороны нет соответствующего разрешения, выбрасывается SecurityException.

Во время итерации по Set, если у вызывающей стороны нет разрешения на доступ к конкретному идентификационному данному, выбрасывается SecurityException. Тем не менее, итерация переходит к следующему элементу в Set.

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

getPublicCredentials

public <T> Set<T> getPublicCredentials(Class<T> c)

Возвращает Set общедоступных идентификационных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.

Возвращаемое Set не поддерживается внутренними общедоступными идентификационными данными Credential Set объекта Subject. Для каждого вызова метода создается и возвращается новый Set. Изменения в возвращаемом Set не повлияют на внутренние общедоступные идентификационные данные Credential 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)

Возвращает Set закрытых идентификационных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.

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

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

Type Parameters:
T - тип класса, моделируемого c
Parameters:
c - все возвращаемые Set закрытых идентификационных данных будут экземплярами этого класса.
Returns:
a Set закрытых идентификационных данных, которые являются экземплярами указанного 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 - если у вызывающей стороны нет разрешения на доступ к закрытым идентификационным данным данного 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 - если у вызывающей стороны нет разрешения на доступ к закрытым идентификационным данным этого объекта Subject.
See Also:
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