被認証者、主体、認証、および資格

リソースへのアクセスを承認する場合、最初に、アプリケーションが要求元を認証する必要があります。JAAS フレームワークでは、要求元を「被認証者」という語で表します。被認証者は、ユーザやサービスなどの任意のエンティティです。被認証者は、javax.security.auth.Subject クラスで表されます。

「認証」は、被認証者の識別情報を検証するプロセスを表します。認証は、セキュリティ保護された方法で実行する必要があります。さもないと、悪意のあるユーザが他のユーザを装ってシステムへのアクセスを試みる可能性があります。通常、認証には、識別情報を証明する何らかの証拠を示す被認証者が含まれます。この種の証拠には、被認証者だけが知り得るまたは保持し得る情報 (パスワードや指紋など)、または被認証者だけが作成可能な情報 (非公開鍵を使用した署名付きデータなど) があります。

認証が完了すると、被認証者は関連付けられた識別情報、つまり「主体」(java.security.Principal タイプ) を使って生成されます。被認証者には、多数の主体を含めることができます。たとえば、ユーザは、他の被認証者と明確に区別される名前主体 (「John Doe」) および SSN 主体 (「123-45-6789」) を保持できます。

被認証者は、関連付けられた主体に加え、「資格」と呼ばれる独自のセキュリティ関連属性を保持できます。資格には、新規サービスに対して被認証者を認証する際に使用可能な情報が含まれます。この種の資格には、パスワード、Kerberos チケット、および公開鍵証明書が含まれます。資格には、被認証者による特定操作の実行を可能にするデータが含まれる場合もあります。たとえば、暗号化鍵は、被認証者によるデータへの署名または暗号化を可能にする資格を表します。公開および非公開資格クラスは、コア JAAS クラスライブラリの一部ではありません。したがって、あらゆるクラスが資格を表すことができます。