クラスSubject
- すべての実装されたインタフェース:
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に格納されます。
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を実装しません。 したがって、サブジェクトに関連付けられているすべての具体的なPrincipal実装は、Serializableを実装する必要があります。
非推奨のメソッドおよび置換
セキュリティ・マネージャAPIに依存するユーザー・ベースの認可のこのクラスの次のメソッドは、削除で非推奨になりました:
getSubject(AccessControlContext)doAs(Subject, PrivilegedAction)doAs(Subject, PrivilegedExceptionAction)doAsPrivileged(Subject, PrivilegedAction, AccessControlContext)doAsPrivileged(Subject, PrivilegedExceptionAction, AccessControlContext)
current()およびcallAs(Subject, Callable)は、これらのメソッドの置換です。currentはgetSubject(AccessController.getContext()) (最初に指定どおり)と同等で、callAsはdoAsと似ていますが、スローされる入力タイプと例外は若干異なります。
doAsまたはcallAsコールは、Subjectオブジェクトをアクションの実行期間にバインドし、アクション内のcurrentメソッドを使用してサブジェクトを取得できます。 このサブジェクトは、子スレッドが開始され、構造化された同時実行性を使用して親スレッドの実行内で終了した場合に、子スレッドによって継承できます。
- 導入されたバージョン:
- 1.4
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明static <T> T現在のサブジェクトとしてsubjectを指定してCallableを実行します。static Subjectcurrent()現在の件名を返します。static <T> TdoAs(Subject subject, PrivilegedAction<T> action) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。static <T> TdoAs(Subject subject, PrivilegedExceptionAction<T> action) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、権限を有効にして、指定されたPrivilegedExceptionActionを実行しました。static <T> TdoAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、指定されたAccessControlContextによって有効化および制限された権限で、指定されたPrivilegedActionを実行しました。static <T> TdoAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、指定されたAccessControlContextによって有効化および制限された権限で、指定されたPrivilegedExceptionActionを実行しました。boolean指定されたObjectがこのSubjectと同じかどうかを比較します。このSubjectに関連付けられたPrincipalのSetを返します。getPrincipals(Class<T> c) 指定したClassのインスタンスまたはサブクラスである、このSubjectに関連付けられたPrincipalのSetを返します。このSubjectが保持する非公開資格のSetを返します。<T> Set<T> getPrivateCredentials(Class<T> c) 指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた非公開資格のSetを返します。このSubjectが保持する公開資格のSetを返します。<T> Set<T> getPublicCredentials(Class<T> c) 指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた公開資格のSetを返します。static Subject削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、サポートされなくなった「セキュリティ・マネージャ」とともにのみ役立つ、指定されたAccessControlContextに関連付けられたサブジェクトを取得するために使用されていました。inthashCode()このSubjectのハッシュ・コードを返します。booleanこのSubjectが読取り専用であるかどうかを問い合わせます。voidこのSubjectを読取り専用に設定します。toString()このSubjectの文字列表現を返します。
-
コンストラクタの詳細
-
Subject
public Subject()空のPrincipalのSetと空の公開資格および非公開資格のSetとで、Subjectのインスタンスを作成します。新しく作成されたSetでは、以降の変更を許可する前に、この
Subjectが読取り専用に設定されているかどうかを確認する必要があります。 これらのセットではnull要素も禁止されており、null要素を追加、問合せまたは削除しようとすると、NullPointerExceptionになります。 -
Subject
public Subject(boolean readOnly, Set<? extends Principal> principals, Set<?> pubCredentials, Set<?> privCredentials) Principalと資格を指定して、Subjectのインスタンスを作成します。Principalと資格は、指定されたSetから新しく作成されたSetへコピーされます。 これらの新しく作成されたSetでは、以降の変更を許可する前に、この
Subjectが読取り専用に設定されているかどうかを確認する必要があります。 これらのセットではnull要素も禁止されており、null要素を追加、問合せまたは削除しようとすると、NullPointerExceptionになります。- パラメータ:
readOnly-Subjectが読取り専用の場合はtrue、そうでない場合はfalse。principals- このSubjectに関連付けるPrincipalのSet。pubCredentials- このSubjectに関連付ける公開資格のSet。privCredentials- このSubjectに関連付ける非公開資格のSet。- スロー:
NullPointerException- 指定されたprincipals、pubCredentialsまたはprivCredentialsがnullの場合、またはこれらの3つのセットのいずれかにNULL値が存在する場合。
-
-
メソッドの詳細
-
setReadOnly
public void setReadOnly()このSubjectを読取り専用に設定します。このSubjectの
PrincipalSetおよび資格Setに対する変更(追加や削除)は許可されません。 このSubjectの資格に対するdestroy操作だけが許可されます。その後、Subjectの
Principalや資格のSetを変更しようとすると、IllegalStateExceptionがスローされます。 また、Subjectを読取り専用にしたあとで、再度書込み可能にリセットすることはできません。 -
isReadOnly
public boolean isReadOnly()このSubjectが読取り専用であるかどうかを問い合わせます。- 戻り値:
- この
Subjectが読取り専用である場合はtrue、そうでない場合はfalse。
-
getSubject
@Deprecated(since="17", forRemoval=true) public static Subject getSubject(AccessControlContext acc) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは、サポートされなくなった「セキュリティ・マネージャ」とともにのみ役立つ、指定されたAccessControlContextに関連付けられたサブジェクトを取得するために使用されていました。 このメソッドは、常にUnsupportedOperationExceptionをスローするように変更されました。current()という名前の置換APIが追加され、現在のサブジェクトの取得に使用できます。 Security Managerの代替はありません。UnsupportedOperationExceptionをスローします。current()という名前の置換APIが追加され、現在のサブジェクトの取得に使用できます。- パラメータ:
acc- 無視されます- 戻り値:
- 該当なし
- スロー:
UnsupportedOperationException- 常時- 関連項目:
-
current
public static Subject current()現在の件名を返します。現在のサブジェクトは、
callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>)メソッドによってインストールされます。callAs(subject, action)がコールされると、actionが現在のサブジェクトとして実行され、このメソッドで取得できます。actionが終了すると、現在のサブジェクトは以前の値にリセットされます。 現在のサブジェクトは、callAs()の最初のコールの前にnullになります。このメソッドは、現在のスレッドの実行期間にバインドされた
Subjectを返します。- 戻り値:
- 現在のサブジェクト(現在のサブジェクトがインストールされていない場合、または現在のサブジェクトが
nullに設定されている場合)。 - 導入されたバージョン:
- 18
- 関連項目:
-
callAs
public static <T> T callAs(Subject subject, Callable<T> action) throws CompletionException 現在のサブジェクトとしてsubjectを指定してCallableを実行します。このメソッドは、
actionを起動し、subjectを実行期間にバインドします。- 型パラメータ:
T-actionのcallメソッドによって返される値の型- パラメータ:
subject- 指定したactionが実行されるときのSubject。 このパラメータはnullになる可能性がある。action- 現在のサブジェクトとしてsubjectで実行するコード。nullにはできません。- 戻り値:
actionのcallメソッドによって返される値- スロー:
NullPointerException-actionがnullの場合CompletionException-action.call()が例外をスローした場合。CompletionExceptionの原因は、action.call()によってスローされる例外に設定されます。- 導入されたバージョン:
- 18
- 関連項目:
-
doAs
@Deprecated(since="18", forRemoval=true) public static <T> T doAs(Subject subject, PrivilegedAction<T> action) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、権限を有効にして、指定されたPrivilegedActionを実行しました。 特権を有効にしてアクションを実行することは、サポートされなくなった「セキュリティ・マネージャ」と組み合わせてのみ有効でした。 このメソッドは、アクションをそのまま起動し、サブジェクトを実行期間にバインドするように変更されました。callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>)という名前の置換APIが追加され、これを使用して同じ作業を実行できます。 Security Managerの代替はありません。特定のSubjectとして動作します。このメソッドは、
actionを起動し、subjectを実行期間にバインドします。- 型パラメータ:
T- PrivilegedActionのrunメソッドによって返される値の型。- パラメータ:
subject- 指定したactionが実行されるときのSubject。 このパラメータはnullになる可能性がある。action- 指定したSubjectとして実行されるコード。- 戻り値:
- PrivilegedActionの
runメソッドによって返される値。 - スロー:
NullPointerException-PrivilegedActionがnullである場合。- 関連項目:
-
doAs
@Deprecated(since="18", forRemoval=true) public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、権限を有効にして、指定されたPrivilegedExceptionActionを実行しました。 特権を有効にしてアクションを実行することは、サポートされなくなった「セキュリティ・マネージャ」と組み合わせてのみ有効でした。 このメソッドは、アクションをそのまま起動し、サブジェクトを実行期間にバインドするように変更されました。callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>)という名前の置換APIが追加され、これを使用して同じ作業を実行できます。 Security Managerの代替はありません。特定のSubjectとして動作します。このメソッドは、
actionを起動し、subjectを実行期間にバインドします。- 型パラメータ:
T- PrivilegedExceptionActionのrunメソッドによって返される値の型。- パラメータ:
subject- 指定したactionが実行されるときのSubject。 このパラメータはnullになる可能性がある。action- 指定したSubjectとして実行されるコード。- 戻り値:
- PrivilegedExceptionActionの
runメソッドによって返される値。 - スロー:
PrivilegedActionException-PrivilegedExceptionAction.runメソッドがチェック例外をスローした場合。NullPointerException- 指定されたPrivilegedExceptionActionがnullである場合。- 関連項目:
-
doAsPrivileged
@Deprecated(since="17", forRemoval=true) public static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、指定されたAccessControlContextによって有効化および制限された権限で、指定されたPrivilegedActionを実行しました。 特権を有効にしてアクションを実行することは、サポートされなくなった「セキュリティ・マネージャ」と組み合わせてのみ有効でした。 このメソッドは、AccessControlContextを無視してアクションをそのまま起動し、サブジェクトを実行期間にバインドするように変更されました。callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>)という名前の置換APIが追加され、これを使用して同じ作業を実行できます。 Security Managerの代替はありません。特定のSubjectとして動作します。このメソッドは、
actionを起動し、subjectを実行期間にバインドします。- 型パラメータ:
T- PrivilegedActionのrunメソッドによって返される値の型。- パラメータ:
subject- 指定したactionが実行されるときのSubject。 このパラメータはnullになる可能性がある。action- 指定したSubjectとして実行されるコード。acc- 無視されます- 戻り値:
- PrivilegedActionの
runメソッドによって返される値。 - スロー:
NullPointerException-PrivilegedActionがnullである場合。- 関連項目:
-
doAsPrivileged
@Deprecated(since="17", forRemoval=true) public static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このメソッドは当初、指定されたAccessControlContextによって有効化および制限された権限で、指定されたPrivilegedExceptionActionを実行しました。 特権を有効にしてアクションを実行することは、サポートされなくなった「セキュリティ・マネージャ」と組み合わせてのみ有効でした。 このメソッドは、AccessControlContextを無視してアクションをそのまま起動し、サブジェクトを実行期間にバインドするように変更されました。callAs(javax.security.auth.Subject, java.util.concurrent.Callable<T>)という名前の置換APIが追加され、これを使用して同じ作業を実行できます。 Security Managerの代替はありません。特定のSubjectとして動作します。このメソッドは、
actionを起動し、subjectを実行期間にバインドします。- 型パラメータ:
T- PrivilegedExceptionActionのrunメソッドによって返される値の型。- パラメータ:
subject- 指定したactionが実行されるときのSubject。 このパラメータはnullになる可能性がある。action- 指定したSubjectとして実行されるコード。acc- 無視されます- 戻り値:
- PrivilegedExceptionActionの
runメソッドによって返される値。 - スロー:
PrivilegedActionException-PrivilegedExceptionAction.runメソッドがチェック例外をスローした場合。NullPointerException- 指定されたPrivilegedExceptionActionがnullである場合。- 関連項目:
-
getPrincipals
-
getPrincipals
指定したClassのインスタンスまたはサブクラスである、このSubjectに関連付けられたPrincipalのSetを返します。返される
Setは、このSubjectの内部的なPrincipalSetに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的なPrincipalSetには反映されません。- 型パラメータ:
T-cでモデル化されたクラスのタイプ- パラメータ:
c- 返されるプリンシパルのSetはすべて、このクラスのインスタンスになる。- 戻り値:
- 指定した
ClassのインスタンスであるPrincipalのSet。 - スロー:
NullPointerException- 指定されたClassがnullである場合。
-
getPublicCredentials
-
getPrivateCredentials
-
getPublicCredentials
指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた公開資格のSetを返します。返される
Setは、このSubjectの内部的な公開資格Setに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的な公開資格Setには反映されません。- 型パラメータ:
T-cでモデル化されたクラスのタイプ- パラメータ:
c- 返される公開資格のSetはすべて、このクラスのインスタンスになる。- 戻り値:
- 指定した
Classのインスタンスである公開資格のSet。 - スロー:
NullPointerException- 指定されたClassがnullである場合。
-
getPrivateCredentials
指定したClassのインスタンスまたはサブクラスであるこのSubjectに関連付けられた非公開資格のSetを返します。返される
Setは、このSubjectの内部的な非公開資格Setに基づいていません。 各メソッドの呼出しに対して、新しいSetが作成されて返されます。 返されたSetに対する変更は、内部的な非公開資格Setには反映されません。- 型パラメータ:
T-cでモデル化されたクラスのタイプ- パラメータ:
c- 返される非公開資格のSetはすべて、このクラスのインスタンスになる。- 戻り値:
- 指定した
Classのインスタンスである非公開資格のSet。 - スロー:
NullPointerException- 指定されたClassがnullである場合。
-
equals
public boolean equals(Object o) 指定されたObjectがこのSubjectと同じかどうかを比較します。 指定されたオブジェクトもSubjectであり、2つのSubjectインスタンスが等価である場合、trueを返します。 より正確には、PrincipalのSetとCredentialのSetが等しい場合に、2つのSubjectインスタンスは等しくなります。 -
toString
-
hashCode
-
PrivilegedActionを実行しました。