サブジェクト、プリンシパル、認証、およびクレデンシャル

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

認証は、サブジェクトの識別情報を検証するプロセスを表し、セキュアな方法で実行する必要があります。さもないと、悪意のあるユーザーが他のユーザーを装ってシステムへのアクセスを試みる可能性があります。通常、認証には、識別情報を証明するなんらかの形式の証拠を示すサブジェクトが含まれます。この種の証拠には、サブジェクトのみが知るか保持できる情報(パスワードや指紋など)またはサブジェクトのみが作成可能な情報(秘密鍵を使用した署名付きデータなど)があります。

認証が完了すると、サブジェクトは関連付けられた識別情報、つまりプリンシパル (java.security.Principal型の)を使用して生成されます。サブジェクトには、多数のプリンシパルを含めることができます。たとえば、ユーザーは、ほかのサブジェクトと明確に区別される名前プリンシパル("John Doe")およびSSNプリンシパル("123-45-6789")を保持できます。

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


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.