|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.security.auth.Subject
public final class Subject
Subject
は、個人などの単一エンティティに関する関連情報をグループ化したものです。この種の情報には、Subject の識別情報や、セキュリティ関連の属性 (パスワードや暗号化鍵など) が含まれます。
Subject は、複数の識別情報を持つ場合があります。それぞれの識別情報は、Subject
内の Principal
で表されます。Principal は単に名前を Subject
にバインドしているだけです。たとえば、Alice という個人の Subject
には、Alice の運転免許証の名前「Alice Bar」が Subject
にバインドしている Principal と、学生番号「999-99-9999」が Subject
にバインドしている Principal の 2 つがあります。どちらの Principal も、違う名前であっても同じ Subject
を参照しています。
また、Subject
には、セキュリティ関連の属性もあります。これらは資格とも呼ばれます。非公開の暗号化鍵など、特別な保護を必要とする重要な資格は、非公開資格 Set
内に格納されます。公開鍵証明書や Kerberos サーバチケットのように、共有されるべき資格は、公開資格 Set
に格納されます。異なる資格 Set にアクセスして変更するには、異なるアクセス権が必要となります。
Subject
に関連付けられたすべての Principal を取得するには、getPrincipals
メソッドを呼び出します。Subject
に属する公開または非公開の資格をすべて取得するには、getPublicCredentials
メソッドや getPrivateCredentials
メソッドを呼び出します。返された Principal と資格の 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
に関連付けられた Principal は直列化されますが、Subject
に関連付けられた資格は直列化されません。java.security.Principal
クラスは Serializable
を実装していません。そのため、Subject に関連付けられた具体的な Principal
実装はすべて、Serializable
を実装する必要があります。
Principal
,
DomainCombiner
,
直列化された形式コンストラクタの概要 | |
---|---|
Subject()
空の Principal の Set と空の公開資格および非公開資格の Set とで、 Subject のインスタンスを作成します。 |
|
Subject(boolean readOnly,
Set<? extends Principal> principals,
Set<?> pubCredentials,
Set<?> privCredentials)
Principal と資格を指定して、 Subject のインスタンスを作成します。 |
メソッドの概要 | ||
---|---|---|
static Object |
doAs(Subject subject,
PrivilegedAction action)
特定の Subject として動作します。 |
|
static Object |
doAs(Subject subject,
PrivilegedExceptionAction action)
特定の Subject として動作します。 |
|
static Object |
doAsPrivileged(Subject subject,
PrivilegedAction action,
AccessControlContext acc)
特定の Subject として特権付きで動作します。 |
|
static Object |
doAsPrivileged(Subject subject,
PrivilegedExceptionAction action,
AccessControlContext acc)
特定の Subject として特権付きで動作します。 |
|
boolean |
equals(Object o)
指定した Object と、この Subject が等しいかどうかを比較します。 |
|
Set<Principal> |
getPrincipals()
この Subject に関連付けられた Principal の Set を返します。 |
|
|
getPrincipals(Class<T> c)
指定した Class のインスタンスまたはサブクラスである、この Subject に関連付けられた Principal の Set を返します。 |
|
Set<Object> |
getPrivateCredentials()
この Subject が保持する非公開資格の Set を返します。 |
|
|
getPrivateCredentials(Class<T> c)
指定した Class のインスタンスまたはサブクラスであるこの Subject に関連した非公開資格の Set を返します。 |
|
Set<Object> |
getPublicCredentials()
この Subject が保持する公開資格の Set を返します。 |
|
|
getPublicCredentials(Class<T> c)
指定した Class のインスタンスまたはサブクラスであるこの Subject に関連した公開資格の Set を返します。 |
|
static Subject |
getSubject(AccessControlContext acc)
指定した AccessControlContext に関連付けられた Subject を取得します。 |
|
int |
hashCode()
この Subject のハッシュコードを返します。 |
|
boolean |
isReadOnly()
この Subject が読み取り専用であるかどうかを問い合わせます。 |
|
void |
setReadOnly()
この Subject を読み取り専用に設定します。 |
|
String |
toString()
この Subject の String 表現を返します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
---|
public Subject()
Set
と空の公開資格および非公開資格の Set とで、 Subject
のインスタンスを作成します。
新しく作成された Set では、以降の変更を許可する前に、この Subject
が読み取り専用に設定されているかどうかを確認する必要があります。新しく作成された Set は、呼び出し側に十分なアクセス権があることを保証することで、不正な変更を予防します。
Principals Set を変更するには、呼び出し側に AuthPermission("modifyPrincipals")
が必要です。公開資格 Set を変更するには、呼び出し側に AuthPermission("modifyPublicCredentials")
が必要です。非公開資格 Set を変更するには、呼び出し側に AuthPermission("modifyPrivateCredentials")
が必要です。
public Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials)
Subject
のインスタンスを作成します。
Principal と資格は、指定された Set から新しく作成された Set へコピーされます。これらの新しく作成された Set では、以降の変更を許可する前に、この Subject
が読み取り専用に設定されているかどうかを確認する必要があります。新しく作成された Set は、呼び出し側に十分なアクセス権があることを確認することによって、不正な変更を予防します。
Principals Set を変更するには、呼び出し側に AuthPermission("modifyPrincipals")
が必要です。公開資格 Set を変更するには、呼び出し側に AuthPermission("modifyPublicCredentials")
が必要です。非公開資格 Set を変更するには、呼び出し側に AuthPermission("modifyPrivateCredentials")
が必要です。
readOnly
- Subject
が読み取り専用の場合は true、そうでない場合は false principals
- この Subject
に関連付ける Principal の Set
pubCredentials
- この Subject
に関連付ける公開資格の Set
privCredentials
- この Subject
に関連付ける非公開資格の Set
NullPointerException
- 指定した principals
、pubCredentials
、privCredentials
のどれかが null
の場合メソッドの詳細 |
---|
public void setReadOnly()
Subject
を読み取り専用に設定します。
この Subject の Principal
の Set
や資格 Set に対する変更 (追加や削除) は許可されません。この Subject の資格に対する destroy
操作だけが許可されます。
その後、Subject の Principal
や資格の Set を変更しようとすると、IllegalStateException
がスローされます。また、Subject
を読み取り専用にしたあとで、もう一度書き込めるようにリセットすることはできません。
SecurityException
- 呼び出し側に、この Subject
を読み取り専用に設定するアクセス権がない場合public boolean isReadOnly()
Subject
が読み取り専用であるかどうかを問い合わせます。
Subject
が読み取り専用である場合は true、そうでない場合は falsepublic static Subject getSubject(AccessControlContext acc)
AccessControlContext
に関連付けられた Subject
を取得します。
AccessControlContext
に、多くの Subject が含まれる場合があります (入れ子にされた doAs
呼び出しによる)。この場合、AccessControlContext
に関連付けられた最新の Subject
が返されます。
acc
- Subject
を取得する AccessControlContext
AccessControlContext
に関連付けられた Subject
。この AccessControlContext
に関連付けられた Subject
がない場合は null
SecurityException
- 呼び出し側に、この Subject
を取得するアクセス権がない場合
NullPointerException
- 指定した AccessControlContext
が null
の場合public static Object doAs(Subject subject, PrivilegedAction action)
Subject
として動作します。
このメソッドでは、最初に現在の Thread の AccessControlContext
を AccessController.getContext
で取得し、取得したコンテキストと (指定した Subject
で構築した) 新しい SubjectDomainCombiner
を使用して新しい AccessControlContext
をインスタンス化します。最後に、AccessController.doPrivileged
を呼び出して、指定した PrivilegedAction
と新しく構築した AccessControlContext
を渡します。
subject
- 指定した action
が実行されるときの Subject
。null
も可 action
- 指定した Subject
として実行されるコード
run
メソッドによって返される Object
NullPointerException
- PrivilegedAction
が null
の場合
SecurityException
- 呼び出し側に、このメソッドを呼び出すアクセス権がない場合public static Object doAs(Subject subject, PrivilegedExceptionAction action) throws PrivilegedActionException
Subject
として動作します。
このメソッドでは、最初に現在の Thread の AccessControlContext
を AccessController.getContext
で取得し、取得したコンテキストと (指定した Subject
で構築した) 新しい SubjectDomainCombiner
を使用して新しい AccessControlContext
をインスタンス化します。最後に、AccessController.doPrivileged
を呼び出して、指定した PrivilegedExceptionAction
と新しく構築した AccessControlContext
を渡します。
subject
- 指定した action
が実行されるときの Subject
。null
も可 action
- 指定した Subject
として実行されるコード
run
メソッドによって返される Object
PrivilegedActionException
- PrivilegedExceptionAction.run
メソッドが確認済みの例外をスローした場合
NullPointerException
- 指定した PrivilegedExceptionAction
が null
の場合
SecurityException
- 呼び出し側に、このメソッドを呼び出すアクセス権がない場合public static Object doAsPrivileged(Subject subject, PrivilegedAction action, AccessControlContext acc)
Subject
として特権付きで動作します。
このメソッドの動作は、現在の Thread の AccessControlContext
を取得する代わりに、指定した AccessControlContext
を使用する点を除き、Subject.doAs
と同じになります。指定した AccessControlContext
が null
の場合、このメソッドは新しい AccessControlContext
を空の ProtectionDomain のコレクションでインスタンス化します。
subject
- 指定した action
が実行されるときの Subject
。null
も可 action
- 指定した Subject
として実行されるコード acc
- 指定した subject と action が結びつけられている AccessControlContext
run
メソッドによって返される Object
NullPointerException
- PrivilegedAction
が null
の場合
SecurityException
- 呼び出し側に、このメソッドを呼び出すアクセス権がない場合public static Object doAsPrivileged(Subject subject, PrivilegedExceptionAction action, AccessControlContext acc) throws PrivilegedActionException
Subject
として特権付きで動作します。
このメソッドの動作は、現在の Thread の AccessControlContext
を取得する代わりに、指定した AccessControlContext
を使用する点を除き、Subject.doAs
と同じになります。指定した AccessControlContext
が null
の場合、このメソッドは新しい AccessControlContext
を空の ProtectionDomain のコレクションでインスタンス化します。
subject
- 指定した action
が実行されるときの Subject
。null
も可 action
- 指定した Subject
として実行されるコード acc
- 指定した subject と action が結びつけられている AccessControlContext
run
メソッドによって返される Object
PrivilegedActionException
- PrivilegedExceptionAction.run
メソッドが確認済みの例外をスローした場合
NullPointerException
- 指定した PrivilegedExceptionAction
が null
の場合
SecurityException
- 呼び出し側に、このメソッドを呼び出すアクセス権がない場合public Set<Principal> getPrincipals()
Subject
に関連付けられた Principal の Set
を返します。各 Principal
は、この Subject
の識別情報を表します。
返される Set
は、この Subject の内部的な Principal
の Set
と結びついています。返された Set
に対する変更は、内部の Principal
の Set
にも影響します。
Subject
に関連付けられた Principal の Set
public <T extends Principal> Set<T> getPrincipals(Class<T> c)
Class
のインスタンスまたはサブクラスである、この Subject
に関連付けられた Principal の Set
を返します。
返される Set
は、この Subject の内部的な Principal
の Set
と結びついていません。メソッド呼び出しごとに、新しい Set
が作成されて返されます。返された Set
に対する変更は、内部的な Principal
の Set
に影響しません。
c
- 返される Principal の Set
は、すべてこのクラスのインスタンスになる
Class
のインスタンスである Principal の Set
NullPointerException
- 指定した Class
が null
の場合public Set<Object> getPublicCredentials()
Subject
が保持する公開資格の Set
を返します。
返される Set
は、この Subject の内部的な公開 Credential の Set
と結びついています。返された Set
に対する変更は、内部的な公開 Credential の Set
にも影響します。
Subject
が保持する公開資格の Set
public Set<Object> getPrivateCredentials()
Subject
が保持する非公開資格の Set
を返します。
返される Set
は、この Subject の内部的な非公開 Credential の Set
と結びついています。返された Set
に対する変更は、内部的な非公開 Credential の Set
にも影響します。
呼び出し側では、返される Set
の Credential にアクセスするための権限、または Set
自体を変更するためのアクセス権が必要となります。呼び出し側に適切なアクセス権がない場合は、SecurityException
がスローされます。
Set
を繰り返し処理する際、呼び出し側に特定の Credential に対するアクセス権がない場合は、SecurityException
がスローされます。その場合でも、Iterator
は Set
の次の要素に処理を進めます。
Subject
が保持する非公開資格の Set
public <T> Set<T> getPublicCredentials(Class<T> c)
Class
のインスタンスまたはサブクラスであるこの Subject
に関連した公開資格の Set
を返します。
返される Set
は、この Subject の内部的な公開 Credential の Set
と結びついていません。各メソッドの呼び出しに対して、新しい Set
が作成されて返されます。返された Set
に対する変更は、内部的な公開 Credential の Set
に影響しません。
c
- 返される公開資格の Set
は、すべてこのクラスのインスタンスになる
Class
のインスタンスである公開資格の Set
NullPointerException
- 指定した Class
が null
の場合public <T> Set<T> getPrivateCredentials(Class<T> c)
Class
のインスタンスまたはサブクラスであるこの Subject
に関連した非公開資格の Set
を返します。
呼び出し側には、要求した Credential すべてに対するアクセス権がなければいけません。そうでない場合は、SecurityException
がスローされます。
返される Set
は、この Subject の内部的な非公開 Credential の Set
と結びついていません。各メソッドの呼び出しに対して、新しい Set
が作成されて返されます。返された Set
に対する変更は、内部的な非公開 Credential の Set
に影響しません。
c
- 返される非公開資格の Set
は、すべてこのクラスのインスタンスになる
Class
のインスタンスである非公開資格の Set
NullPointerException
- 指定した Class
が null
の場合public boolean equals(Object o)
Subject
が等しいかどうかを比較します。指定したオブジェクトが Subject であり、2 つの Subject
インスタンスが等価である場合に true を返します。より正確には、Principal
の Set と Credential
の Set が等しい場合に、2 つの Subject
インスタンスは等しくなります。
Object
内の equals
o
- この Subject
と等しいかどうかを比較する Object
Subject
と等しい場合は true
SecurityException
- 呼び出し側にこの Subject
の非公開資格へのアクセス権がない場合、あるいは、呼び出し側に指定した Subject
の非公開資格へのアクセス権がない場合Object.hashCode()
,
Hashtable
public String toString()
Subject
の String 表現を返します。
Object
内の toString
Subject
の String 表現public int hashCode()
Subject
のハッシュコードを返します。
Object
内の hashCode
Subject
のハッシュコード
SecurityException
- 呼び出し側にこの Subject の非公開資格へのアクセス権がない場合Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。