Класс 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
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Subject() |
Создает экземпляр Subject с пустым набором принципов и пустыми наборами общедоступных и частных данных. |
Subject |
Создает экземпляр Subject с принципами и данными. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <T> T |
doAs |
Выполняет работу как конкретный Subject. |
static <T> T |
doAs |
Выполняет работу как конкретный Subject. |
static <T> T |
doAsPrivileged |
Устаревший, для удаления: Элемент API может быть удален в будущей версии. Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. |
static <T> T |
doAsPrivileged |
Устаревший, для удаления: Элемент API может быть удален в будущей версии. Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. |
boolean |
equals |
Сравнивает указанный объект с этим Subject на равенство. |
Set<Principal> |
getPrincipals() |
Возвращает набор принципов, связанных с этим Subject. |
<T extends Principal> |
getPrincipals |
Возвращает набор принципов, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class. |
Set<Object> |
getPrivateCredentials() |
Возвращает набор частных данных, хранящихся этим Subject. |
<T> Set<T> |
getPrivateCredentials |
Возвращает набор частных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class. |
Set<Object> |
getPublicCredentials() |
Возвращает набор общедоступных данных, хранящихся этим Subject. |
<T> Set<T> |
getPublicCredentials |
Возвращает набор общедоступных данных, связанных с этим Subject, которые являются экземплярами или подклассами указанного Class. |
static Subject |
getSubject |
Устаревший, для удаления: Элемент API может быть удален в будущей версии. Этот метод зависит от AccessControlContext, который, в сочетании с менеджером безопасности, устарел и может быть удален в будущей версии. |
int |
hashCode() |
Возвращает хэш-код для этого Subject. |
boolean |
isReadOnly() |
Определяет, является ли этот Subject только для чтения. |
void |
setReadOnly() |
Устанавливает этот Subject в режим только для чтения. |
String |
toString() |
Возвращает строковое представление этого Subject. |
Подробное описание конструкторов
Предмет
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)
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- тип значения, возвращаемого методомrunPrivilegedAction. - Параметры:
-
subject-Subject, от имени которого будет выполняться указанноеaction. Этот параметр может бытьnull. -
action- код, который должен быть выполнен от имени указанногоSubject. - Возвращает:
- значение, возвращенное методом
runPrivilegedAction. - Исключения:
-
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- тип значения, возвращаемого методомrunPrivilegedExceptionAction. - Параметры:
-
subject-Subject, от имени которого будет выполняться указанноеaction. Этот параметр может бытьnull. -
action- код, который должен быть выполнен от имени указанногоSubject. - Возвращает:
- значение, возвращенное методом
runPrivilegedExceptionAction. - Исключения:
-
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)
Subject. Этот метод ведет себя точно так же, как Subject.doAs, за исключением того, что вместо извлечения текущего AccessControlContext потока он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext является null, этот метод создает новый AccessControlContext с пустым набором ProtectionDomains.
- Параметры типа:
-
T- тип значения, возвращаемого методомrunPrivilegedAction. - Параметры:
-
subject-Subject, от имени которого будет выполняться указанноеaction. Этот параметр может бытьnull. -
action- код, который должен быть выполнен от имени указанногоSubject. -
acc-AccessControlContext, который должен быть привязан к указанному предмету и действию. - Возвращает:
- значение, возвращенное методом
runPrivilegedAction. - Исключения:
-
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
Subject. Этот метод ведет себя точно так же, как Subject.doAs, за исключением того, что вместо получения текущего AccessControlContext потока он использует предоставленный AccessControlContext. Если предоставленный AccessControlContext является null, этот метод создаёт новый AccessControlContext с пустым набором ProtectionDomains.
- Type Parameters:
-
T- тип значения, возвращаемого методомrunPrivilegedExceptionAction. - Parameters:
-
subject-Subjectот имени которого будет выполняться указанныйaction. Этот параметр может бытьnull. -
action- код, который должен быть выполнен от имени указанногоSubject. -
acc-AccessControlContext, который должен быть привязан к указанному subject и action. - Returns:
- значение, возвращаемое методом
runPrivilegedExceptionAction. - 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:
Setpublic 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:
Setprivate 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- возвращаемыйSetpublic Credentials будет содержать только экземпляры этого класса. - Returns:
Setpublic 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- возвращаемыйSetprivate Credentials будет содержать только экземпляры этого класса. - Returns:
Setprivate 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:
toString
public String toString()
Subject.- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого
Subject.
hashCode
public int hashCode()
Subject. - Overrides:
-
hashCodeв классеObject - Returns:
- хеш-код для этого
Subject. - Throws:
-
SecurityException- если установлен менеджер безопасности и у вызывающего объекта нет разрешенияPrivateCredentialPermissionдоступа к частным учетным данным этого субъекта. - См. также:
© 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