- java.lang.Object
- 
- javax.security.auth.Subject
 
- 
- すべての実装されたインタフェース:
- Serializable
 
 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を実装する必要があります。- 導入されたバージョン:
- 1.4
- 関連項目:
- Principal,- DomainCombiner, 直列化された形式
 
- 
- 
メソッドのサマリーすべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 static <T> TdoAs(Subject subject, PrivilegedAction<T> action)特定のSubjectとして動作します。static <T> TdoAs(Subject subject, PrivilegedExceptionAction<T> action)特定のSubjectとして動作します。static <T> TdoAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc)特定のSubjectとして特権付きで動作します。static <T> TdoAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc)特定のSubjectとして特権付きで動作します。booleanequals(Object o)指定されたObjectがこのSubjectと同じかどうかを比較します。Set<Principal>getPrincipals()このSubjectに関連付けられたPrincipalのSetを返します。<T extends Principal>
 Set<T>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 SubjectgetSubject(AccessControlContext acc)指定したAccessControlContextに関連付けられたSubjectを取得します。inthashCode()このSubjectのハッシュ・コードを返します。booleanisReadOnly()このSubjectが読取り専用であるかどうかを問い合わせます。voidsetReadOnly()このSubjectを読取り専用に設定します。StringtoString()このSubjectの文字列表現を返します。
 
- 
- 
- 
コンストラクタの詳細- 
Subjectpublic Subject() 空のPrincipalのSetと空の公開資格および非公開資格のSetとで、Subjectのインスタンスを作成します。新しく作成されたSetでは、以降の変更を許可する前に、この Subjectが読取り専用に設定されているかどうかを確認する必要があります。 新しく作成されたSetは、呼出し側に十分なアクセス権があることを確認することによって、不正な変更を予防します。 これらのセットはヌル要素も禁止し、ヌル要素の追加または問合せを試みるとNullPointerExceptionになります。Principals Setを変更するには、呼出し側に AuthPermission("modifyPrincipals")が必要です。 公開資格Setを変更するには、呼出し側にAuthPermission("modifyPublicCredentials")が必要です。 非公開資格Setを変更するには、呼出し側にAuthPermission("modifyPrivateCredentials")が必要です。
 - 
Subjectpublic Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials)Principalと資格を指定して、Subjectのインスタンスを作成します。Principalと資格は、指定されたSetから新しく作成されたSetへコピーされます。 これらの新しく作成されたSetでは、以降の変更を許可する前に、この Subjectが読取り専用に設定されているかどうかを確認する必要があります。 新しく作成されたSetは、呼出し側に十分なアクセス権があることを確認することによって、不正な変更を予防します。 これらのセットはヌル要素も禁止し、ヌル要素の追加または問合せを試みるとNullPointerExceptionになります。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であるか、これらの3つのセットのいずれかにヌル値が存在する場合。
 
 
- 
 - 
メソッドの詳細- 
setReadOnlypublic void setReadOnly() このSubjectを読取り専用に設定します。このSubjectの PrincipalSetおよび資格Setに対する変更(追加や削除)は許可されません。 このSubjectの資格に対するdestroy操作だけが許可されます。その後、Subjectの Principalや資格のSetを変更しようとすると、IllegalStateExceptionがスローされます。 また、Subjectを読取り専用にしたあとで、再度書込み可能にリセットすることはできません。- 例外:
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し元にこの- Subjectを読み取り専用に設定するための- AuthPermission("setReadOnly")権限がない場合。
 
 - 
isReadOnlypublic boolean isReadOnly() このSubjectが読取り専用であるかどうかを問い合わせます。- 戻り値:
- このSubjectが読取り専用である場合はtrue、そうでない場合はfalse。
 
 - 
getSubjectpublic static Subject getSubject(AccessControlContext acc) 指定したAccessControlContextに関連付けられたSubjectを取得します。AccessControlContextに、多くのSubjectが含まれる場合があります(入れ子にされたdoAs呼び出しからの)。 この場合、AccessControlContextに関連付けられた最新のSubjectが返されます。- パラメータ:
- acc-- Subjectを取得する- AccessControlContext。
- 戻り値:
- 提供されたAccessControlContextに関連付けられているSubject。提供されたAccessControlContextに関連付けられているSubjectが存在しない場合はnull。
- 例外:
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し元に- Subjectを取得するための- AuthPermission("getSubject")許可がない場合。
- NullPointerException- 指定された- AccessControlContextが- nullである場合。
 
 - 
doAspublic static <T> T doAs(Subject subject, PrivilegedAction<T> action) 特定のSubjectとして動作します。このメソッドでは、最初に現在のThreadの AccessControlContextをAccessController.getContextで取得し、取得したコンテキストと(指定したSubjectで構築した)新しいSubjectDomainCombinerを使用して新しいAccessControlContextをインスタンス化します。 最後に、AccessController.doPrivilegedを呼び出して、指定したPrivilegedActionと新しく構築したAccessControlContextを渡します。- 型パラメータ:
- T- PrivilegedActionの- runメソッドから返される値の型。
- パラメータ:
- subject- 指定した- actionが実行されるときの- Subject。 このパラメータは- nullになる可能性がある。
- action- 指定した- Subjectとして実行されるコード。
- 戻り値:
- PrivilegedActionのrunメソッドによって返される値。
- 例外:
- NullPointerException-- PrivilegedActionが- nullである場合。
- SecurityException- セキュリティ・マネージャがインストールされ、呼び出し元にこのメソッドを呼び出すための- AuthPermission("doAs")パーミッションがない場合。
 
 - 
doAspublic static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException 特定のSubjectとして動作します。このメソッドでは、最初に現在のThreadの AccessControlContextをAccessController.getContextで取得し、取得したコンテキストと(指定したSubjectで構築した)新しいSubjectDomainCombinerを使用して新しいAccessControlContextをインスタンス化します。 最後に、AccessController.doPrivilegedを呼び出して、指定したPrivilegedExceptionActionと新しく構築したAccessControlContextを渡します。- 型パラメータ:
- T- PrivilegedExceptionActionの- runメソッドから返される値の型。
- パラメータ:
- subject- 指定した- actionが実行されるときの- Subject。 このパラメータは- nullになる可能性がある。
- action- 指定した- Subjectとして実行されるコード。
- 戻り値:
- PrivilegedExceptionActionのrunメソッドによって返される値。
- 例外:
- PrivilegedActionException-- PrivilegedExceptionAction.runメソッドがチェック例外をスローした場合。
- NullPointerException- 指定された- PrivilegedExceptionActionが- nullである場合。
- SecurityException- セキュリティ・マネージャがインストールされ、呼び出し元にこのメソッドを呼び出すための- AuthPermission("doAs")パーミッションがない場合。
 
 - 
doAsPrivilegedpublic static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc) 特定のSubjectとして特権付きで動作します。このメソッドの動作は、現在のThreadの AccessControlContextを取得する代わりに、指定したAccessControlContextを使用する点を除き、Subject.doAsと同じになります。 指定されたAccessControlContextがnullの場合、このメソッドはProtectionDomainの空のコレクションを使用して、新規AccessControlContextをインスタンス化します。- 型パラメータ:
- T- PrivilegedActionの- runメソッドから返される値の型。
- パラメータ:
- subject- 指定した- actionが実行されるときの- Subject。 このパラメータは- nullになる可能性がある。
- action- 指定した- Subjectとして実行されるコード。
- acc- 指定したsubjectとactionが結びつけられている- AccessControlContext。
- 戻り値:
- PrivilegedActionのrunメソッドによって返される値。
- 例外:
- NullPointerException-- PrivilegedActionが- nullである場合。
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し元にこのメソッドを呼び出すための- AuthPermission("doAsPrivileged")権限がない場合。
 
 - 
doAsPrivilegedpublic static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException 特定のSubjectとして特権付きで動作します。このメソッドの動作は、現在のThreadの AccessControlContextを取得する代わりに、指定したAccessControlContextを使用する点を除き、Subject.doAsと同じになります。 指定されたAccessControlContextがnullの場合、このメソッドはProtectionDomainの空のコレクションを使用して、新規AccessControlContextをインスタンス化します。- 型パラメータ:
- T- PrivilegedExceptionActionの- runメソッドから返される値の型。
- パラメータ:
- subject- 指定した- actionが実行されるときの- Subject。 このパラメータは- nullになる可能性がある。
- action- 指定した- Subjectとして実行されるコード。
- acc- 指定したsubjectとactionが結びつけられている- AccessControlContext。
- 戻り値:
- PrivilegedExceptionActionのrunメソッドによって返される値。
- 例外:
- PrivilegedActionException-- PrivilegedExceptionAction.runメソッドがチェック例外をスローした場合。
- NullPointerException- 指定された- PrivilegedExceptionActionが- nullである場合。
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し元にこのメソッドを呼び出すための- AuthPermission("doAsPrivileged")権限がない場合。
 
 - 
getPrincipalspublic Set<Principal> getPrincipals() このSubjectに関連付けられたPrincipalのSetを返します。 各Principalは、このSubjectの識別情報を表します。返される Setは、このSubjectの内部的なPrincipalSetに基づいています。 返されたSetに対する変更は、内部のPrincipalSetにも反映されます。セキュリティ・マネージャがインストールされている場合、呼び出し元は返されたセットを変更するための AuthPermission("modifyPrincipals")パーミッションを持たなければなりません。そうしないとSecurityExceptionがスローされます。- 戻り値:
- このSubjectに関連付けられたPrincipalのSet。
 
 - 
getPrincipalspublic <T extends Principal> Set<T> getPrincipals(Class<T> c) 指定したClassのインスタンスまたはサブクラスである、このSubjectに関連付けられたPrincipalのSetを返します。返される Setは、このSubjectの内部的なPrincipalSetに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的なPrincipalSetには反映されません。- 型パラメータ:
- T-- cでモデル化されるクラスの型
- パラメータ:
- c- 返されるプリンシパルの- Setはすべて、このクラスのインスタンスになる。
- 戻り値:
- 指定したClassのインスタンスであるPrincipalのSet。
- 例外:
- NullPointerException- 指定された- Classが- nullである場合。
 
 - 
getPublicCredentialspublic Set<Object> getPublicCredentials() このSubjectが保持する公開資格のSetを返します。返される Setは、このSubjectの内部的な公開資格Setに基づいています。 返されたSetに対する変更は、内部の公開資格Setにも反映されます。セキュリティ・マネージャがインストールされている場合、呼び出し元は返されたセットを変更するための AuthPermission("modifyPublicCredentials")パーミッションを持たなければなりません。そうしないとSecurityExceptionがスローされます。- 戻り値:
- このSubjectが保持する公開資格証明のSet。
 
 - 
getPrivateCredentialspublic Set<Object> getPrivateCredentials() このSubjectが保持する非公開資格のSetを返します。返される Setは、このSubjectの内部的な非公開資格Setに基づいています。 返されたSetに対する変更は、内部の非公開資格Setにも反映されます。セキュリティ・マネージャがインストールされている場合、呼び出し元は返されたセットを変更するための AuthPermission("modifyPrivateCredentials")パーミッションを持たなければなりません。そうしないとSecurityExceptionがスローされます。Setを反復処理しているときに、セキュリティ・マネージャがインストールされていて、呼び出し元に特定の資格証明にアクセスするためのPrivateCredentialPermissionがない場合は、SecurityExceptionがスローされます。 それにもかかわらず、IteratorはSetの次の要素に進められます。- 戻り値:
- このSubjectが保持するプライベート資格証明のSet。
 
 - 
getPublicCredentialspublic <T> Set<T> getPublicCredentials(Class<T> c) 指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた公開資格のSetを返します。返される Setは、このSubjectの内部的な公開資格Setに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的な公開資格Setには反映されません。- 型パラメータ:
- T-- cでモデル化されるクラスの型
- パラメータ:
- c- 返される公開資格の- Setはすべて、このクラスのインスタンスになる。
- 戻り値:
- 指定したClassのインスタンスである公開資格のSet。
- 例外:
- NullPointerException- 指定された- Classが- nullである場合。
 
 - 
getPrivateCredentialspublic <T> Set<T> getPrivateCredentials(Class<T> c) 指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた非公開資格のSetを返します。セキュリティ・マネージャがインストールされている場合、呼び出し側はリクエストされたすべての資格証明にアクセスするために PrivateCredentialPermissionを持っていなければなりません。そうしないとSecurityExceptionがスローされます。返される Setは、このSubjectの内部的な非公開資格Setに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的な非公開資格Setには反映されません。- 型パラメータ:
- T-- cでモデル化されるクラスの型
- パラメータ:
- c- 返される非公開資格の- Setはすべて、このクラスのインスタンスになる。
- 戻り値:
- 指定したClassのインスタンスである非公開資格のSet。
- 例外:
- NullPointerException- 指定された- Classが- nullである場合。
 
 - 
equalspublic boolean equals(Object o) 指定されたObjectがこのSubjectと同じかどうかを比較します。 指定されたオブジェクトもSubjectであり、2つのSubjectインスタンスが等価である場合、trueを返します。 より正確には、PrincipalのSetとCredentialのSetが等しい場合に、2つのSubjectインスタンスは等しくなります。- オーバーライド:
- equals、クラス- Object
- パラメータ:
- o- この- Subjectと等しいかどうかを比較するオブジェクト。
- 戻り値:
- 指定されたObjectがこのSubjectと等しい場合はtrue。
- 例外:
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し元にこの- Subjectまたは提供されている- Subjectのプライベート資格証明にアクセスするための- PrivateCredentialPermission権限がない場合。
- 関連項目:
- Object.hashCode()、- HashMap
 
 - 
toStringpublic String toString() このSubjectの文字列表現を返します。
 - 
hashCodepublic int hashCode() このSubjectのハッシュ・コードを返します。- オーバーライド:
- hashCode、クラス- Object
- 戻り値:
- このSubjectのハッシュ・コード。
- 例外:
- SecurityException- セキュリティ・マネージャがインストールされていて、呼び出し側にこのSubjectプライベート資格証明にアクセスするための- PrivateCredentialPermissionアクセス権がない場合。
- 関連項目:
- Object.equals(java.lang.Object),- System.identityHashCode(java.lang.Object)
 
 
- 
 
-