public final class Subject extends Object implements Serializable
一个Subject代表一个单一的实体的一组相关的信息,比如一个人。这些信息包括主体的身份,以及它的安全相关的属性(例如,密码和加密密钥)。
受试者可能有多重身份。一个身份是在Subject一Principal。校长干脆将名称绑定到一个Subject。例如,一个Subject恰好是一个人,爱丽丝,可能会有两个原则:一个结合“爱丽丝吧”,在她的驾驶证的名义,向Subject,另一种是结合,“999-99-9999”,她的学生证号码,到Subject。主要指的是同一个Subject虽然各有不同的名称。
一个Subject也可能自身安全相关的属性,这被称为凭据。敏感的凭据,需要特殊的保护,如私有密钥存储在一个私人凭证Set。凭据的目的是共享的,如公钥证书或Kerberos服务器票存储在一个公共信任的Set。不同的权限需要访问和修改不同的凭据集。
检索所有与Subject相关原理,getPrincipals方法调用。检索所有公共或私人凭据属于Subject,调用getPublicCredentials方法或getPrivateCredentials方法,分别。修改返回Set校长和凭据,在Set类中定义的方法。例如:
主题主题;校长;对象的凭证;/添加一个主体和凭据的主题课题。getprincipals()加(主);课题。getpubliccredentials()添加(凭证);
这Subject类实现Serializable。而与Subject相关的校长是序列化的,与Subject相关凭据不。请注意,java.security.Principal类不实现Serializable。因此,所有的混凝土Principal实现与主体必须实施Serializable。
Principal,
DomainCombiner,
Serialized Form
| Constructor and Description |
|---|
Subject()
创建一个与校长和空套公共和私人凭据空
Set
Subject实例。
|
Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials)
创建一个与校长和凭据
Subject实例。
|
| Modifier and Type | Method and Description |
|---|---|
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校长
Set。
|
<T extends Principal> |
getPrincipals(类<T> c)
返回一个
Set与此
Subject是指定的
类实例或类相关负责人。
|
Set<Object> |
getPrivateCredentials()
返回私有凭据这
Subject举行
Set。
|
<T> Set<T> |
getPrivateCredentials(类<T> c)
返回一个
Set私有凭据这
Subject是指定的
类实例或类相关。
|
Set<Object> |
getPublicCredentials()
返回公共凭据这
Subject举行
Set。
|
<T> Set<T> |
getPublicCredentials(类<T> c)
返回一个
Set与此
Subject是指定的
类实例或类相关的公共证书。
|
static Subject |
getSubject(AccessControlContext acc)
得到与所提供的
AccessControlContext相关的
Subject。
|
int |
hashCode()
返回该
Subject hashCode。
|
boolean |
isReadOnly()
这
Subject查询是否是只读的。
|
void |
setReadOnly()
这
Subject设置为只读。
|
String |
toString()
这
Subject返回的字符串表示形式。
|
public Subject()
Set
Subject实例。
新建成的集检查这是否Subject已设置只读之前允许随后的修改。新创建的集还可以防止非法修改,以确保调用方有足够的权限。
修改原则,调用者必须AuthPermission("modifyPrincipals")。修改公共信任的建立,调用者必须AuthPermission("modifyPublicCredentials")。修改私人证件套,调用者必须AuthPermission("modifyPrivateCredentials")。
public Subject(boolean readOnly,
Set<? extends Principal> principals,
Set<?> pubCredentials,
Set<?> privCredentials)
Subject实例。
从指定的集合中复制的主体和凭据复制到新构造的集合中。这些新创建的设置是否Subject已设置只读之前允许随后的修改。新创建的集还可以防止非法修改,以确保调用方有足够的权限。
修改原则,调用者必须AuthPermission("modifyPrincipals")。修改公共信任的建立,调用者必须AuthPermission("modifyPublicCredentials")。修改私人证件套,调用者必须AuthPermission("modifyPrivateCredentials")。
readOnly -如果
Subject是只读的,否则为假。
principals——校长要与此相关的
Set
Subject。
pubCredentials -公共证书是与此相关的
Set
Subject。
privCredentials -私人凭据是与此相关的
Set
Subject。
NullPointerException -如果指定
principals,
pubCredentials,或
privCredentials是
null。
public void setReadOnly()
Subject设置为只读。
修改(添加和删除)这一主题的Principal Set和证书将不被允许。对这一问题的凭据的destroy操作仍将是被允许的。
随后试图修改对象的Principal和证书将导致IllegalStateException抛出。而且,一旦Subject是只读的,不能复位,又可写。
SecurityException如果调用者没有权限设置为只读
Subject。
public boolean isReadOnly()
Subject查询是否是只读的。
Subject是只读的真,否则为假。
public static Subject getSubject(AccessControlContext acc)
AccessControlContext相关的
Subject。
的AccessControlContext可能包含许多科目(从doAs嵌套调用)。在这种情况下,与AccessControlContext相关最新的Subject返回。
acc -从检索
Subject的
AccessControlContext。
Subject与提供
AccessControlContext,或
null如果没有
Subject与提供
AccessControlContext相关。
SecurityException如果调用者没有权限得到
Subject。
NullPointerException -如果提供的
AccessControlContext是
null。
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方法返回的值。
NullPointerException -如果
PrivilegedAction是
null。
SecurityException如果调用者没有权限调用该方法。
public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException
Subject。
该方法首先获取当前线程的AccessControlContext通过AccessController.getContext,然后实例化一个新的AccessControlContext利用检索的背景随着新一SubjectDomainCombiner(使用提供了Subject)。最后,该方法调用AccessController.doPrivileged,通过它提供的PrivilegedExceptionAction,以及新建成的AccessControlContext。
T -返回值的类型由privilegedexceptionaction的
run方法。
subject -
Subject,指定
action将运行。这个参数可以
null。
action的代码运行在指定的
Subject。
run方法返回的值。
PrivilegedActionException -如果
PrivilegedExceptionAction.run方法抛出一个异常。
NullPointerException -如果指定
PrivilegedExceptionAction是
null。
SecurityException如果调用者没有权限调用该方法。
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方法返回的值。
NullPointerException -如果
PrivilegedAction是
null。
SecurityException如果调用者没有权限调用该方法。
public static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException
Subject特权。
此方法的行为正是Subject.doAs,但不是获取当前线程的AccessControlContext,它使用所提供的AccessControlContext。如果提供的AccessControlContext是null,此方法实例化一个新的AccessControlContext与protectiondomains空集合。
run方法返回的值的类型
T。
subject -
Subject,指定
action将运行。这个参数可以
null。
action的代码运行在指定的
Subject。
acc -
AccessControlContext被连接到指定的主题和行动。
run方法返回的值。
PrivilegedActionException -如果
PrivilegedExceptionAction.run方法抛出一个异常。
NullPointerException -如果指定
PrivilegedExceptionAction是
null。
SecurityException如果调用者没有权限调用该方法。
public Set<Principal> getPrincipals()
Subject校长
Set。每个
Principal表示此
Subject身份。
返回的Set由这个主体的内部Principal Set支持。要返回的Set影响内部Principal Set以及任何修改。
Set
Subject校长。
public <T extends Principal> Set<T> getPrincipals(类<T> c)
Set与此
Subject是指定的
类实例或类相关
返回的Set不是由该主体的内部Principal Set支持。一个新的Set创建并返回每个方法调用。要返回的Set修改不会影响内部Principal Set。
T -类的模拟
c类型
c -返回的
Set校长都是这个类的实例。
Set校长是指定的
类实例。
NullPointerException -如果指定
类是
null。
public Set<Object> getPublicCredentials()
Subject举行
Set。
返回的Set由这个主体的内部公共信任的Set支持。要返回的Set影响内部公共信任的Set以及任何修改。
Set公共凭据这
Subject举行。
public Set<Object> getPrivateCredentials()
Subject举行
Set。
返回的Set由这个主体的内部私有凭据Set支持。要返回的Set影响内部私有凭据Set以及任何修改。
来电者要求的权限访问在返回的Set凭据,或修改Set本身。一个SecurityException如果调用方不具有适当的权限被。
当遍历Set,一SecurityException是如果对方没有权限访问特定凭证扔。的Iterator仍然是先进的在Set下元。
Set私有凭据这
Subject举行。
public <T> Set<T> getPublicCredentials(类<T> c)
Set与此
Subject是指定的
类实例或类相关的公共证书。
返回的Set不是由该主体的内部公共信任的Set支持。一个新的Set创建并返回每个方法调用。要返回的Set修改不会影响到内部的公共信任的Set。
T -类的模拟
c类型
c -返回的
Set公共证书都是这个类的实例。
Set公共凭据,是指定的
类实例。
NullPointerException -如果指定
类是
null。
public <T> Set<T> getPrivateCredentials(类<T> c)
Set私有凭据这
Subject是指定的
类实例或类相关联。
调用者必须有权限访问所有需要的凭据,或将引发SecurityException。
返回的Set不是由该主体的内部私有凭据Set支持。一个新的Set创建并返回每个方法调用。要返回的Set修改不会影响内部私有凭据Set。
T -类的模拟
c类型
c -返回的
Set私人证件都是这个类的实例。
Set私有凭据,是指定的
类实例。
NullPointerException -如果指定
类是
null。
public boolean equals(Object o)
Subject平等的比较。如果给定的对象也是一个主体和两
Subject实例相等返回true。更正式地说,如果他们的
Principal和
Credential集是相等的两
Subject实例相等。
equals 方法重写,继承类
Object
o对象进行比较,这
Subject平等。
Subject。
SecurityException -如果调用者没有权限访问这个
Subject私有凭据,或如果调用者没有权限访问所提供的
Subject私人凭据。
Object.hashCode(),
HashMap
public String toString()
Subject返回的字符串表示形式。
public int hashCode()
Subject hashCode。
hashCode 方法重写,继承类
Object
Subject hashCode。
SecurityException -如果调用者没有权限访问该对象的私有凭据。
Object.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.