10

あるインタビューで、インタビュアーは私に、なぜプライベート資格情報が必要なのかと尋ねましたJAAS
次のようなパブリック資格情報とプライベート資格情報の両方にアクセスできます。

Set<Object> privateCredentials = subject.getPrivateCredentials();
Set<Object> publicCredentials = subject.getPublicCredentials();

(privateCredentialspublicCredentials) の両方にアクセスでき、アクセス方法は同じです。
では、2 種類のクレデンシャルにはどのような意味があるのでしょうか。

4

5 に答える 5

9

Theodore Shrader、Bruce A. Rich、Anthony J. Nadalin による本「Java and Internet Security」より:

もう少し論争がありましたが、JAAS の設計者は、プリンシパルは、すぐに提供できる必要があるある種の身元証明を持っている可能性があり、これらの身元証明には機密情報が含まれている可能性があると結論付けました。一連のプライベート資格情報もサブジェクトに追加されました。クレデンシャルの内容は、認証メカニズムによって単純なパスワードから指紋 (無限大、さらにその先まで) と大きく異なる可能性があるため、クレデンシャルのタイプは単純に java.lang.Obiect のままにしました。プリンシパルとクレデンシャルの関係がある場合は、特定のプリンシパル クラス (または、特定の LoginModule クラス) の実装者の課題として残されています。JAAS の観点から見ると、プライベート資格情報とパブリック資格情報の唯一の違いは、プライベート資格情報のセットへのアクセスには特定の javax.security.auth.AuthPermission が必要なことです

于 2012-10-03T14:03:58.247 に答える
1

さて、あなたは一般的にそれらを本当に必要としません。私は約7つのLoginModuleを備えたかなり大規模なJAASシステムを持っており、プライベート資格情報をまったく使用していません。たとえば、システムの他の部分で取得するためにユーザーのパスワードまたは秘密鍵を保存する場合に使用しますが、それを行う必要があるという本質的なことは何もありません。システムの設計方法に完全に依存します。私の態度は、パスワードはLDAPにあり、そこに保持され、秘密鍵を持つユーザーがいないというものです。

ただし、それらが必要な場合は、パブリッククレデンシャルとは別にする必要があります。これは、パブリックではなくプライベートであるためです実際、それらPrivateCredentialPermissionsにアクセスすることを要求することにより、それらをさらに保護することができます。

于 2012-10-05T02:03:10.980 に答える
1

JAAS リファレンス ガイドから:

javax.security.auth.PrivateCredentialPermissionプライベート資格情報のセットを反復処理するには、各資格情報にアクセスする必要があります。詳細については、PrivateCredentialPermissionAPI ドキュメントを参照してください。

于 2012-09-25T08:19:13.333 に答える
0

私の JAAS の理解 (および一般的な SW 設計原則の理解) から、
Subject はエンティティであり、たとえば user などの request のソースを表します。 Subject をある種の抽象化として見てください。

私は Krb5LoginModule で JAAS を使用しています。たとえば、私たちの場合、プリンシパルはユーザーの詳細を表します (ユーザー名 + レルム - つまり、「johndoe@ovirt.org」)。
ユーザーは、基礎となる暗号化メカニズムに応じて、一連の秘密資格情報と公開資格情報を持っている可能性があります (ここで正しい用語を使用していることを願っています)。公開鍵で。
getPrivateCredentials は秘密鍵のセットを保持し、そのリストを取得するにはおそらく権限が必要です。
試したことはありませんが、getPrivateCredentials を使用して秘密鍵を取得し、デジタル署名に使用できるのではないでしょうか?

これらのメソッドを使用して kerberos チケットを取得し、その有効性 (有効期限) に関する情報を取得したことをお伝えできます。この分割が行われた理由について、これで少しでもお分かりいただけたと思います。

于 2012-09-28T18:15:56.133 に答える
0

公開クレデンシャルは、自由に公開して、サブジェクトに渡すことができます。例:

  • 証明書
  • 公開鍵

プライベート資格情報は秘密です。Subject オブジェクトには幅広い聴衆がいる可能性があるため、これらは「部外者」によるアクセスから隠す必要があります。API は、サブジェクトのプライベート資格情報にアクセスするための制限を提供します。これについては、他の回答で詳しく説明しています。例:

  • パスワード
  • 秘密鍵
于 2012-11-21T01:05:35.580 に答える