public final class Subject extends Object implements Serializable
Subject は、個人などの単一エンティティーに関する関連情報をグループ化したものです。この種の情報には、Subject の識別情報や、セキュリティー関連の属性 (パスワードや暗号化鍵など) が含まれます。
Subject は、複数の識別情報を持つ場合があります。それぞれの識別情報は、Subject 内の Principal として表されます。Principal は単に名前を Subject にバインドしたものです。たとえば、Alice という個人の Subject には、2 つの Principal があります。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 <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)
指定された Object がこの
Subject と同じかどうかを比較します。 |
Set<Principal> |
getPrincipals()
この
Subject に関連付けられた Principal の Set を返します。 |
<T extends Principal> |
getPrincipals(Class<T> c)
指定した
Class のインスタンスまたはサブクラスである、この Subject に関連付けられた Principal の Set を返します。 |
Set<Object> |
getPrivateCredentials()
この
Subject が保持する非公開資格の Set を返します。 |
<T> Set<T> |
getPrivateCredentials(Class<T> c)
指定した
Class のインスタンスまたはサブクラスであるこの Subject に関連付けられた非公開資格の Set を返します。 |
Set<Object> |
getPublicCredentials()
この
Subject が保持する公開資格の Set を返します。 |
<T> Set<T> |
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 の文字列表現を返します。 |
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、そうでない場合は false。public 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 <T> T doAs(Subject subject, PrivilegedAction<T> action)
Subject として動作します。
このメソッドでは、最初に現在の Thread の AccessControlContext を AccessController.getContext で取得し、取得したコンテキストと (指定した Subject で構築した) 新しい SubjectDomainCombiner を使用して新しい AccessControlContext をインスタンス化します。最後に、AccessController.doPrivileged を呼び出して、指定した PrivilegedAction と新しく構築した AccessControlContext を渡します。
subject - 指定した action が実行されるときの Subject。このパラメータは null になる可能性がある。action - 指定した Subject として実行されるコード。 run メソッドによって返される値。NullPointerException - PrivilegedAction が null である場合。 SecurityException - 呼び出し側に、このメソッドを呼び出すアクセス権がない場合。public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException
Subject として動作します。
このメソッドでは、最初に現在の Thread の AccessControlContext を AccessController.getContext で取得し、取得したコンテキストと (指定した Subject で構築した) 新しい SubjectDomainCombiner を使用して新しい AccessControlContext をインスタンス化します。最後に、AccessController.doPrivileged を呼び出して、指定した PrivilegedExceptionAction と新しく構築した AccessControlContext を渡します。
subject - 指定した action が実行されるときの Subject。このパラメータは null になる可能性がある。action - 指定した Subject として実行されるコード。 run メソッドによって返される値。PrivilegedActionException - PrivilegedExceptionAction.run メソッドがチェック例外をスローした場合。 NullPointerException - 指定された PrivilegedExceptionAction が null である場合。 SecurityException - 呼び出し側に、このメソッドを呼び出すアクセス権がない場合。public static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc)
Subject として特権付きで動作します。
このメソッドの動作は、現在の Thread の AccessControlContext を取得する代わりに、指定した AccessControlContext を使用する点を除き、Subject.doAs と同じになります。指定された AccessControlContext が null の場合、このメソッドは ProtectionDomain の空のコレクションを使用して、新規 AccessControlContext をインスタンス化します。
subject - 指定した action が実行されるときの Subject。このパラメータは null になる可能性がある。action - 指定した Subject として実行されるコード。acc - 指定した subject と action が結びつけられている AccessControlContext。 run メソッドによって返される値。NullPointerException - PrivilegedAction が null である場合。 SecurityException - 呼び出し側に、このメソッドを呼び出すアクセス権がない場合。public static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException
Subject として特権付きで動作します。
このメソッドの動作は、現在の Thread の AccessControlContext を取得する代わりに、指定した AccessControlContext を使用する点を除き、Subject.doAs と同じになります。指定された AccessControlContext が null の場合、このメソッドは ProtectionDomain の空のコレクションを使用して、新規 AccessControlContext をインスタンス化します。
subject - 指定した action が実行されるときの Subject。このパラメータは null になる可能性がある。action - 指定した Subject として実行されるコード。acc - 指定した subject と action が結びつけられている AccessControlContext。 run メソッドによって返される値。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 - 返されるプリンシパルの Set はすべて、このクラスのインスタンスになる。Class のインスタンスである Principal の Set。NullPointerException - 指定された Class が null である場合。public Set<Object> getPublicCredentials()
Subject が保持する公開資格の Set を返します。
返される Set は、この Subject の内部的な公開資格 Set に基づいています。返された Set に対する変更は、内部の公開資格 Set にも反映されます。
Subject が保持する公開資格の Set。public Set<Object> getPrivateCredentials()
Subject が保持する非公開資格の Set を返します。
返される Set は、この Subject の内部的な非公開資格 Set に基づいています。返された Set に対する変更は、内部の非公開資格 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 の内部的な公開資格 Set に基づいていません。各メソッドの呼び出しに対して、新しい Set が作成されて返されます。返された Set に対する変更は、内部的な公開資格 Set には反映されません。
c - 返される公開資格の Set はすべて、このクラスのインスタンスになる。Class のインスタンスである公開資格の Set。NullPointerException - 指定された Class が null である場合。public <T> Set<T> getPrivateCredentials(Class<T> c)
Class のインスタンスまたはサブクラスであるこの Subject に関連付けられた非公開資格の Set を返します。
呼び出し側には、要求した Credential すべてに対するアクセス権がなければなりません。そうでない場合は、SecurityException がスローされます。
返される Set は、この Subject の内部的な非公開資格 Set に基づいていません。各メソッドの呼び出しに対して、新しい Set が作成されて返されます。返された Set に対する変更は、内部的な非公開資格 Set には反映されません。
c - 返される非公開資格の Set はすべて、このクラスのインスタンスになる。Class のインスタンスである非公開資格の Set。NullPointerException - 指定された Class が null である場合。public boolean equals(Object o)
Subject と同じかどうかを比較します。指定されたオブジェクトも Subject であり、2 つの Subject インスタンスが等価である場合、true を返します。より正確には、Principal の Set と Credential の Set が等しい場合に、2 つの Subject インスタンスは等しくなります。
equals、クラス: Objecto - この Subject と等しいかどうかを比較するオブジェクト。Subject と等しい場合は true。SecurityException - 呼び出し側にこの Subject の非公開資格へのアクセス権がない場合、または呼び出し側に指定された Subject の非公開資格へのアクセス権がない場合。Object.hashCode()、HashMappublic String toString()
Subject の文字列表現を返します。
public int hashCode()
Subject のハッシュコードを返します。
hashCode、クラス: ObjectSubject のハッシュコード。SecurityException - 呼び出し側にこの Subject の非公開資格へのアクセス権がない場合。Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.