2

基本認証を設定するプロジェクトを開始しました。ダイジェスト認証に切り替えたいと思います。問題は、実際のパスワードではなく、実際のパスワードのハッシュを提供した場合にのみ認証が検証されることです。

BASICからDIGESTに切り替えるために、次のことを行いました。

  1. 私のweb.xmlでauth-methodをDIGESTに変更しました

  2. JDBCレルムのJAASコンテキストを「jdbcDigestRealm」に変更しました

  3. 私のデータベースでは、以前はパスワードとして「password」を使用していましたが、MD5(webuser:postgres:webuser)(webuserはログイン、webuserはパスワード、postgresはレルム)の結果に変更しました。つまり、テーブルのパスワードをc3c2681ed07a5a2a5cb772061a8385e8に設定しました。

私が抱えている問題は、リソースにアクセスしようとするとブラウザにログインポップアップが表示されるのに、パスワードとして「webuser」を使用しても機能しないことです。ただし、パスワードとして「c3c2681ed07a5a2a5cb772061a8385e8」を使用すると機能します。まだBASIC認証モードになっているようです。

どんな手掛かり ?

ありがとうございました !

4

2 に答える 2

3

DIGEST auth-methodは、HTTPダイジェスト認証と同じです。ブラウザとサーバー間の通信を暗号化するだけです。サーバーには、プレーンテキストのパスワードがまだあります。

http://java.boot.by/wcd-guide/ch05s03.htmlから:

基本認証とダイジェスト認証の違いは、ブラウザとサーバー間のネットワーク接続では、SSL以外の接続でもパスワードが暗号化されることです。サーバーでは、パスワードはクリアテキストまたは暗号化されたテキストで保存できます。これはすべてのログイン方法に当てはまり、アプリケーションデプロイヤーが行う選択とは無関係です。

digest-algorithmのプロパティをにJDBC Realm設定する必要がありますMD5。その後、JDBCレルムはパスワードをハッシュします。

于 2011-10-12T21:10:27.143 に答える
1

おそらく、レルムビューのダイジェストアルゴリズムをglassfishコンソールからMD5に変更する必要があるかもしれません。GlassFish 3.0。*のデフォルト値は引き続きMD5ですが、GlassFish3.1。*からはSHA-256に変更されています。これは解決策かもしれません。

アデム

于 2011-10-12T08:51:36.887 に答える