Класс 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. Например:
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(boolean readOnly,
Set<? extends Principal> principals,
Set<?> pubCredentials,
Set<?> privCredentials) | Создаёт экземпляр |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T> T | doAs(Subject subject,
PrivilegedAction<T> action) | Выполнение работы в качестве конкретного |
static <T> T | doAs(Subject subject,
PrivilegedExceptionAction<T> action) | Выполнение работы в качестве конкретного |
static <T> T | doAsPrivileged(Subject subject,
PrivilegedAction<T> action,
AccessControlContext acc) | Выполнение привилегированной работы в качестве конкретного |
static <T> T | doAsPrivileged(Subject subject,
PrivilegedExceptionAction<T> action,
AccessControlContext acc) | Выполнение привилегированной работы в качестве конкретного |
boolean | equals(Object o) | Сравнение указанного объекта с этим |
Set<Principal> | getPrincipals() | Возвращает набор принципов, связанных с этим |
<T extends Principal> | getPrincipals(Class<T> c) | Возвращает набор принципов, связанных с этим |
Set<Object> | getPrivateCredentials() | Возвращает набор закрытых данных, хранимых этим |
<T> Set<T> | getPrivateCredentials(Class<T> c) | Возвращает набор закрытых данных, связанных с этим |
Set<Object> | getPublicCredentials() | Возвращает набор общедоступных данных, хранимых этим |
<T> Set<T> | getPublicCredentials(Class<T> c) | Возвращает набор общедоступных данных, связанных с этим |
static Subject | getSubject(AccessControlContext acc) | Получить |
int | hashCode() | Возвращает хэш-код для этого |
boolean | isReadOnly() | Определяет, является ли этот |
void | setReadOnly() | Установить этот |
String | toString() | Возвращает строковое представление этого |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
Subject
public Subject()
Создаёт экземпляр Subject с пустым набором принципов и пустым наборами общедоступных и закрытых данных.
Недавно созданные наборы проверяют, установлен ли для этого Subject режим только для чтения, прежде чем разрешить последующие изменения. Недавно созданные наборы также предотвращают незаконные изменения, обеспечивая, что у вызывающей стороны есть достаточные разрешения. Эти наборы также запрещают нулевые элементы, и попытки добавить или запросить нулевой элемент приведут к NullPointerException.
Для изменения набора принципов у вызывающей стороны должны быть AuthPermission("modifyPrincipals"). Для изменения набора общедоступных данных у вызывающей стороны должны быть AuthPermission("modifyPublicCredentials"). Для изменения набора закрытых данных у вызывающей стороны должны быть AuthPermission("modifyPrivateCredentials").
Subject
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- набор принципов, которые должны быть связаны с этимSubject. -
pubCredentials- набор общедоступных данных, которые должны быть связаны с этимSubject. -
privCredentials- набор закрытых данных, которые должны быть связаны с этимSubject. - Исключения:
-
NullPointerException- если указанныйprincipals,pubCredentials, илиprivCredentialsявляютсяnull, или если в любом из этих трёх наборов существует нулевое значение.
Методы
setReadOnly
public void setReadOnly()
Установить данному Subject статус только для чтения.
Изменения (добавление и удаление) для набора Principal и наборов идентификаторов данного субъекта будут запрещены. Операции с destroy для идентификаторов данного субъекта все ещё разрешены.
Попытки последующих изменений набора Principal и наборов идентификаторов приведут к выбрасыванию исключения IllegalStateException. Кроме того, после того как Subject будет установлен в режим только для чтения, его нельзя будет переключить в режим редактирования.
- Исключения:
-
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нетAuthPermission("setReadOnly")разрешения для установки данногоSubjectв режим только для чтения.
isReadOnly
public boolean isReadOnly()
Запрос о том, находится ли этот Subject в режиме только для чтения.
- Возвращает:
- true, если этот
Subjectнаходится в режиме только для чтения, иначе false.
getSubject
public static Subject getSubject(AccessControlContext acc)
Получить Subject по заданному AccessControlContext.
AccessControlContext может содержать несколько субъектов (из вложенных вызовов doAs). В этом случае возвращается последний Subject связанный с AccessControlContext.
- Параметры:
-
acc-AccessControlContextдля извлеченияSubject. - Возвращает:
Subjectпо заданномуAccessControlContext, илиnull, еслиSubjectне связан с заданнымAccessControlContext.- Исключения:
-
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нетAuthPermission("getSubject")разрешения на получениеSubject. -
NullPointerException- если предоставленныйAccessControlContextnull.
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- еслиPrivilegedActionnull. -
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- если указанныйPrivilegedExceptionActionnull. -
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нетAuthPermission("doAs")разрешения для вызова этого метода.
doAsPrivileged
public static <T> T doAsPrivileged(Subject subject,
PrivilegedAction<T> action,
AccessControlContext acc) Выполнить привилегированную работу от имени конкретного Subject.
Этот метод работает точно так же, как Subject.doAs, за исключением того, что вместо получения AccessControlContext текущего потока, он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext null, этот метод создаёт новый AccessControlContext с пустым набором ProtectionDomains.
- Параметры типа:
-
T- тип значения, возвращаемого методомrunобъекта PrivilegedAction. - Параметры:
-
subject-Subject, от имени которого будет выполняться указанное действиеaction. Этот параметр может бытьnull. -
action- код, который будет выполнен от имени указанногоSubject. -
acc-AccessControlContextдля привязки к указанному субъекту и действию. - Возвращает:
- значение, возвращаемое методом
runобъекта PrivilegedAction. - Исключения:
-
NullPointerException- еслиPrivilegedActionnull. -
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нетAuthPermission("doAsPrivileged")разрешения для вызова этого метода.
doAsPrivileged
public static <T> T doAsPrivileged(Subject subject,
PrivilegedExceptionAction<T> action,
AccessControlContext acc)
throws PrivilegedActionException Выполнить привилегированную работу от имени конкретного Subject.
Этот метод работает точно так же, как Subject.doAs, за исключением того, что вместо получения AccessControlContext текущего потока, он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext null, этот метод создаёт новый AccessControlContext с пустым набором ProtectionDomains.
- Параметры типа:
-
T- тип значения, возвращаемого методомrunобъекта PrivilegedExceptionAction. - Параметры:
-
subject-Subject, от имени которого будет выполняться указанное действиеaction. Этот параметр может бытьnull. -
action- код, который будет выполнен от имени указанногоSubject. -
acc-AccessControlContextдля привязки к указанному субъекту и действию. - Возвращает:
- значение, возвращаемое методом
runобъекта PrivilegedExceptionAction. - Исключения:
-
PrivilegedActionException- если методPrivilegedExceptionAction.runвыбрасывает checked исключение. -
NullPointerException- если указанныйPrivilegedExceptionActionnull. -
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нетAuthPermission("doAsPrivileged")разрешения для вызова этого метода.
getPrincipals
public Set<Principal> getPrincipals()
Возвращает множество Set связанных с этим Subject. Каждый Principal представляет идентичность для этого Subject.
Возвращаемое множество подкрепляется внутренней коллекцией Principal Set данного субъекта. Любые изменения в возвращаемом множестве влияют на внутреннюю коллекцию Principal Set.
Если установлен менеджер безопасности, вызывающий объект должен иметь разрешение AuthPermission("modifyPrincipals") для изменения возвращаемого множества, в противном случае будет выбрашено исключение SecurityException.
- Возвращает:
- множество
Setсвязанных с этимSubject.
getPrincipals
public <T extends Principal> Set<T> getPrincipals(Class<T> c)
Возвращает множество Set Subject связанных с этим Subject и являющихся экземплярами или подклассами указанного Class.
Возвращаемое множество не подкрепляется внутренней коллекцией Principal Set субъекта. Для каждого вызова метода создаётся и возвращается новое множество Set . Изменения в возвращаемом множестве не влияют на внутреннюю коллекцию Principal Set.
- Параметры типа:
-
T- тип класса, представляемогоc - Параметры:
-
c- возвращаемое множествоSetбудут экземплярами этого класса. - Возвращает:
- множество
Setявляющихся экземплярами указанногоClass. - Исключения:
-
NullPointerException- если указанныйClassnull.
getPublicCredentials
public Set<Object> getPublicCredentials()
Возвращает множество Set публичных идентификаторов, хранящихся в этом Subject.
Возвращаемое множество подкрепляется внутренней коллекцией публичных идентификаторов Set этого субъекта. Любые изменения в возвращаемом множестве влияют на внутреннюю коллекцию публичных идентификаторов Set.
Если установлен менеджер безопасности, вызывающий объект должен иметь разрешение AuthPermission("modifyPublicCredentials") для изменения возвращаемого множества, в противном случае будет выбрашено исключение SecurityException.
- Возвращает:
- множество
Setпубличных идентификаторов, хранящихся в этомSubject.
getPrivateCredentials
public Set<Object> getPrivateCredentials()
Возвращает Set частных учетных данных, содержащихся в этом Subject.
Возвращаемое Set подкрепляется внутренними частными учетными данными Set этого субъекта. Любое изменение возвращаемого Set также влияет на внутренние частные учетные данные Set.
Если установлен менеджер безопасности, вызывающему методу необходимо иметь разрешение AuthPermission("modifyPrivateCredentials") для изменения возвращаемого набора, в противном случае будет брошено исключение SecurityException.
При итерации по Set, если установлен менеджер безопасности и у вызывающего метода нет разрешения PrivateCredentialPermission для доступа к определенным учетным данным, будет брошено исключение SecurityException. Тем не менее, итерация перейдет к следующему элементу в Set.
- Возвращает:
- a
Setчастных учетных данных, содержащихся в этомSubject.
getPublicCredentials
public <T> Set<T> getPublicCredentials(Class<T> c)
Возвращает Set общедоступных учетных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.
Возвращаемое Set не подкрепляется внутренними общедоступными учетными данными Set этого субъекта. Для каждого вызова метода создается и возвращается новый Set. Изменения в возвращаемом Set не повлияют на внутренние общедоступные учетные данные Set.
- Type Parameters:
-
T- тип класса, моделируемогоc - Parameters:
-
c- все возвращаемыеSetобщедоступных учетных данных будут экземплярами этого класса. - Возвращает:
- a
Setобщедоступных учетных данных, являющихся экземплярами указанногоClass. - Исключение:
-
NullPointerException- если указанныйClassявляетсяnull.
getPrivateCredentials
public <T> Set<T> getPrivateCredentials(Class<T> c)
Возвращает Set частных учетных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class.
Если установлен менеджер безопасности, вызывающий метод должен иметь разрешение PrivateCredentialPermission на доступ ко всем запрашиваемым учетным данным, в противном случае будет брошено исключение SecurityException.
Возвращаемое Set не подкрепляется внутренними частными учетными данными Set этого субъекта. Для каждого вызова метода создается и возвращается новый Set. Изменения в возвращаемом Set не повлияют на внутренние частные учетные данные Set.
- Type Parameters:
-
T- тип класса, моделируемогоc - Parameters:
-
c- все возвращаемыеSetчастных учетных данных будут экземплярами этого класса. - Возвращает:
- a
Setчастных учетных данных, являющихся экземплярами указанногоClass. - Исключение:
-
NullPointerException- если указанныйClassявляетсяnull.
equals
public boolean equals(Object o)
Сравнивает указанный объект с этим Subject на равенство. Возвращает true, если данный объект также является субъектом и два объекта Subject эквивалентны. Более формально, два объекта Subject равны, если их наборы Principal и Credential равны.
- Overrides:
-
equalsв классеObject - Parameters:
-
o- Объект, который необходимо сравнить на равенство с этимSubject. - Возвращает:
- true, если указанный объект равен этому
Subject. - Исключение:
-
SecurityException- если установлен менеджер безопасности и у вызывающего метода нет разрешенияPrivateCredentialPermissionна доступ к частным учетным данным этогоSubjectили предоставленногоSubject. - См. также:
-
Object.hashCode(),HashMap
toString
public String toString()
Возвращает строковое представление этого Subject.
hashCode
public int hashCode()
Возвращает хэш-код для этого Subject.
- Overrides:
-
hashCodeв классеObject - Возвращает:
- хэш-код для этого
Subject. - Исключение:
-
SecurityException- если установлен менеджер безопасности и у вызывающего метода нет разрешенияPrivateCredentialPermissionна доступ к частным учетным данным этого субъекта. - См. также:
-
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/security/auth/Subject.html