7

こんにちは私はGlassfish3.1.2のJDBCRealmに新しいパスワード暗号化アルゴリズムフィールドがあることを読みました。それはなんのためですか?と同様のトピックをグーグルで検索しましたが、決定的な答えは公開されていないようです。

つまり、Glassfish 3でjdbcレルムが機能しているので、3.1.2にアップグレードすると、同じ構成が機能しません。前のスレッドによると、JaasContextをjdbcDigestRealmに設定し(これも機能しないjdbcRealmに加えて)、ダイジェストアルゴリズムをMD5に設定しました(v 3でMD5を使用しましたが、機能しました)。パスワード暗号化アルゴリズムについては、「空白」と「16進数」を試しましたが、どちらも機能しません。

誰かが私がどのように設定すべきか教えてもらえますか?私のクレデンシャルテーブルは、 http://jugojava.blogspot.hk/2011/02/jdbc-security-realm-with-glassfish-and.htmlに従ってMD5ハッシュパスワードを使用したmysqlに基づいています。

4

5 に答える 5

15

以下の設定で動作するようになりました。私の現在の(誤解)理解にいくつかのコメントを追加します。

  • JAASContext = "jdbcRealm" => ファイル「glassfish3/glassfish/domains/domain1/config/login.conf」に従って値を設定する必要があります。デフォルトでは、クラス「com.sun.enterprise.security.auth.login.JDBCLoginModule」(JDBCrealm を実装) は「jdbcRealm」の下に設定されます。「jdbcDigestRealm」の下に構成された別のログインモジュールがあります。これは現在のトピックの一部ではありません。
  • JNDI = "..." => アプリケーションのデータベース用に既に存在するデータソースの名前をそこに入れました。
  • UserTable = "MY_SCHEMA.usertable" => データベース テーブルの「完全修飾名」。
  • UserNameColumn = "userid" => ユーザー名を格納する列名
  • PasswordColumn = "password" => ユーザーパスワード (のハッシュ) を保存する列名。
  • GroupTable = "MY_SCHEMA.grouptable" => データベース テーブルの「完全修飾名」。
  • GroupTableUserNameColumn = "" => これの使い方についての手がかりはありません...
  • GroupNameColumn = "groupid" => ユーザー名を格納する列名
  • AssignGroups = "" => 私が GF コードを理解している限り、これはレルムに登録されているすべてのユーザーにグループのリストを割り当てる方法です。それは一種のハードコーディングです。多かれ少なかれ GlassFish で利用可能なすべてのレルムは、このプロパティを利用する (可能性があります)。
  • DatabaseUser = "" => 理解したとおり、JNDI (2 番目のパラメーター) を使用していない場合はこれが必要です。
  • DatabasePassword = "" => 理解したとおり、JNDI (2 番目のパラメーター) を使用していない場合はこれが必要です。
  • DigestAlgorithm = "SHA-256" => 'MD5'、'SHA-1' または 'SHA-256'。「SHA-256」がデフォルトです。「SHA-256」を見てみましょう。
  • PasswordEncryptionAlgorithm = "AES" => パスワードを保存する前に、ダイジェスト アルゴリズムがパスワードに適用されます。新しいパスワード暗号化は、「ハッシュ」 (DA がパスワードに適用された後の文字列) を暗号化できるようにする追加のセキュリティ レイヤーです。このようにして、攻撃者がデータベースからパスワードを取得すると、パスワードは暗号化およびハッシュされます。そのようなデータが攻撃者にとって役立つ可能性はほとんどありません。
  • Encoding = "Hex" => 'Hex' または 'Base64' を選択できます。Hexは私にとって便利でした。
  • Charset = "" => 私のデータベースには「エキゾチックな」文字セットがないので、そこにスマートなものを設定する必要はないと思います。空白のままにすると機能します。

それが役立つことを願っています。

PS: 誰かがREALドキュメント (現時点では完全に役に立たない公式ドキュメントではない) へのリンクを持っている場合は、ここにリンクを張ってください。

于 2012-10-08T13:28:30.347 に答える
0

まず最初に。ログ出力は何ですか?「動作しない問題」の症状は何ですか?基本認証のポップアップウィンドウが表示されましたか?あなたが手に入れた

No login module configured for jdbcDigestRealm 

または他のエラーメッセージ?

ログイン試行の失敗によるログ出力がない場合は、セキュリティログレベルを変更します。

于 2012-09-07T10:37:10.570 に答える
0

この問題には 2 つのバリエーションがありjdbcRealmます。最初のものは、GF サーバーを 3.1.2.2 リリースに更新した後も引き続き機能する GF 3.1.1 を使用して作成されたドメインから存在していました。次に、このサーバーに新しいドメインを作成しました。を使用して新しいドメインを設定しましたjdbcRealm。3.1.1 構成画面の下に存在しなかった「パスワード暗号化アルゴリズム」を除いて、すべてのパラメーターは 3.1.1 構成と同じでした。Web アプリケーションを使用してログインしようとすると、ログ ファイルに常に "jdbcrealm.invaliduserreason[#]" エラーが記録されていました。

解決してアプリケーションに正常にログインできる唯一の方法は、AES を「パスワード暗号化アルゴリズム」フィールドに追加することでした。変更を保存してサーバーを再起動すると、jdbcRealm接続からユーザーを正常に認証できるようになりました。

于 2012-10-23T19:39:44.280 に答える
0

ここにもう少し詳細なガイドがあります-> http://is.gd/Jx6Gnp

于 2014-07-06T13:54:16.937 に答える