|
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 の Set
public 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
内の 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 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.