私はグラスフィッシュ v3.0.1 b22 でセキュリティのために jdbcRealm を使用しています。このブログに従って、データベース内の USER テーブルを認証に使用するように設定されています: http://blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication. ダイジェスト アルゴリズムをプレーン テキストのままにしておくと、問題なく動作します。ただし、ダイジェスト アルゴリズムに SHA-256 を使用しようとすると、機能しなくなります。私がしたことは、Glassfish - Security - Realm - jdbcRealm - SHA-256 が必要であることを指定することです (ダイジェスト フィールド内に SHA-256 を入力するだけです)。次に、パスワード テキストを SHA-256 ハッシュに変換する簡単な Java プログラムを作成しました。次に、そのハッシュをデータベースのパスワード フィールドに貼り付けます。ちなみに、パスワードフィールドは varchar(30) 型です。もうログインできません。私の単純な Java プログラムが、同じテキスト フィールドに対して毎回異なるハッシュを生成していることに気付きました。
以下は私の単純な Java プログラムです。
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "admin";
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
System.out.println(digest.toString());