|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object | +--javax.security.auth.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 principals,
Set pubCredentials,
Set privCredentials)
Principal の指定した Set と資格とで、 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 |
getPrincipals()
この Subject に関連付けられた Principal の Set を返します。 |
Set |
getPrincipals(Class c)
指定した Class のインスタンスまたはサブクラスである、この Subject に関連付けられた Principal の Set を返します。
|
Set |
getPrivateCredentials()
この Subject が保持する非公開資格の Set を返します。
|
Set |
getPrivateCredentials(Class c)
指定した Class のインスタンスまたはサブクラスであるこの Subject に関連した非公開資格の Set を返します。
|
Set |
getPublicCredentials()
この Subject が保持する公開資格の Set を返します。
|
Set |
getPublicCredentials(Class 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 は、呼び出し側に十分なアクセス権 (たとえば Principal の Set を変更するためには呼び出し側に AuthPermission("modifyPrincipals") がなければならない) があることを保証することで、不正な変更から保護しています。
public Subject(boolean readOnly,
Set principals,
Set pubCredentials,
Set privCredentials)
Subject のインスタンスを作成します。
指定した Set では、以降の変更を許可する前に、この Subject が読み込み専用に設定されていることを確認する必要があります。指定した Set は、呼び出し側に十分なアクセス権があることを保証することで、不正な変更から保護することも必要です。
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 getPrincipals()
Subject に関連付けられた Principal の Set を返します。各 Principal は、この Subject の識別情報を表します。
返される Set は、この Subject の内部的な Principal の Set によって返されます。返された Set に対する変更は、内部の Principal の Set にも影響します。
Subject に関連付けられた Principal の Setpublic Set getPrincipals(Class c)
Class のインスタンスまたはサブクラスである、この Subject に関連付けられた Principal の Set を返します。
返される Set は、この Subject の内部的な Principal の Set によって返されていません。メソッド呼び出しごとに、新しい Set が作成されて返されます。返された Set に対する変更は、内部的な Principal の Set に影響しません。
c - 返される Principal の Set は、すべてこのクラスのインスタンスになる
Class のインスタンスである Principal の Set
NullPointerException - 指定した Class が null の場合public Set getPublicCredentials()
Subject が保持する公開資格の Set を返します。
返される Set
は、この Subject の内部的な公開 Credential の Set によって返されます。返された Set に対する変更は、内部的な公開 Credential の Set にも影響します。
Subject が保持する公開資格の Set
public Set getPrivateCredentials()
Subject が保持する非公開資格の Set を返します。
返される Set 呼び出し側では、返される
は、この Subject の内部的な非公開 Credential の Set によって返されます。返された Set に対する変更は、内部的な非公開 Credential の Set にも影響します。
Set の Credential にアクセスするための権限、または Set 自体を変更するためのアクセス権が必要となります。呼び出し側に適切なアクセス権がない場合は、SecurityException がスローされます。
Set を繰り返し処理する際、呼び出し側に特定の Credential に対するアクセス権がない場合は、SecurityException がスローされます。その場合でも、Iterator は Set の次の要素に処理を進めます。
Subject が保持する非公開資格の Set
public Set getPublicCredentials(Class c)
Class のインスタンスまたはサブクラスであるこの Subject に関連した公開資格の Set を返します。
返される Set
は、この Subject の内部的な公開 Credential の ClassSet によって返されません。各メソッドの呼び出しに対して、新しい Set が作成されて返されます。返された Set に対する変更は、内部的な公開 Credential の Set に影響しません。
c - 返される公開資格の Set は、すべてこのクラスのインスタンスになる
Class のインスタンスである公開資格の Set
NullPointerException - 指定した が null の場合
public Set getPrivateCredentials(Class c)
Class のインスタンスまたはサブクラスであるこの Subject に関連した非公開資格の Set を返します。
呼び出し側には、要求した Credential すべてに対するアクセス権がなければなりません。そうでない場合は、SecurityException がスローされます。
返される Set
は、この Subject の内部的な非公開 Credential の ClassSet によって返されません。各メソッドの呼び出しに対して、新しい Set が作成されて返されます。返された Set に対する変更は、内部的な非公開 Credential の Set に影響しません。
c - 返される非公開 Credential の Set は、すべてこのクラスのインスタンスになる
Class のインスタンスである非公開資格の Set
NullPointerException - 指定した が null の場合
public boolean equals(Object o)
Subject が等しいかどうかを比較します。指定したオブジェクトが Subject であり、2 つの Subject インスタンスが等価である場合に true を返します。より正確には、Principal の Set と Credential の Set が等しい場合に、2 つの Subject インスタンスは等しくなります。
Object 内の equalso - この Subject と等しいかどうかを比較する Object
Subject と等しい場合は true
SecurityException - 呼び出し側にこの Subject の非公開資格へのアクセス権がない場合、あるいは、呼び出し側に指定した Subject の非公開資格へのアクセス権がない場合Object.hashCode(),
Hashtablepublic String toString()
Subject の String 表現を返します。
Object 内の toStringSubject の String 表現public int hashCode()
Subject のハッシュコードを返します。
Object 内の hashCodeSubject のハッシュコード
SecurityException - 呼び出し側にこの Subject の非公開資格へのアクセス権がない場合Object.equals(java.lang.Object),
Hashtable
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.