いくつかの時間後、私は最終的に解決策を見つけました:カスタムログインモジュール。それは短く、シンプルなだけではありませんが、使用するハッシュアルゴリズムの幅広い選択肢を提供しています:
public class MyLoginModule extends DatabaseServerLoginModule {
private static final Logger LOGGER = Logger.getLogger(MyLoginModule.class);
@Override
protected boolean validatePassword(String inputPassword, String expectedPassword) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
LOGGER.error(e.getMessage());
}
byte[] passwordBytes = inputPassword.getBytes();
byte[] hash = md.digest(passwordBytes);
String passwordHash =
org.jboss.security.Base64Utils.tob64(hash);
LOGGER.info(expectedPassword.equals(passwordHash));
return expectedPassword.equals(passwordHash);
}
}
と私standalone.xmlからの抜粋:
<login-module code="other.MyLoginModule" flag="required">
<module-option name="dsJndiName" value="java:/MySqlDS"/>
<module-option name="principalsQuery" value="select passwd from USERS where login=?"/>
<module-option name="rolesQuery" value="select role,'Roles' from USER_ROLES where login=?"/>
</login-module>
これが役立つことがあります。[JBossの設定方法Webアプリケーションにおけるダイジェスト認証のためのDatabaseServerLoginModule](http://stackoverflow.com/questions/3078048/how-to-configure-jboss-databaseserverloginmodule-for-digest-authentication-in-a) –