モジュール java.base
パッケージ javax.security.auth

クラスSubject

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を実装しません。 したがって、サブジェクトに関連付けられているすべての具体的なPrincipal実装は、Serializableを実装する必要があります。

導入されたバージョン:
1.4
関連項目: