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

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

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

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

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


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