【问题标题】:jboss 7 ignores security-domain options and requires password in encrypted formjboss 7 忽略安全域选项并需要加密形式的密码
【发布时间】:2016-05-07 15:32:33
【问题描述】:

我使用 JBoss 7.1.1 和 JavaEE 6。 密码以加密形式存储在 sql 数据库中,即“X8oyfUbUbfqE9IWvAW1/3”而不是“admin”。但是,如果我尝试使用“admin”密码登录,每次都会被拒绝 - 服务器需要“X8oyfUbUbfqE9IWvAW1/3”。

我在我的standalone-full.xml 中使用以下选项:(我用-c Standalone-full.xml 启动服务器)

<module-option name="hashAlgorithm" value="MD5"/> <module-option name="hashEncoding" value="BASE64"/> <module-option name="hashUserPassword" value="true"/> <module-option name="hashStorePassword" value="true"/>

【问题讨论】:

标签: jakarta-ee jboss


【解决方案1】:

经过一段时间,我终于找到了一个解决方案:自定义登录模块。它不仅简短,而且提供了多种哈希算法可供选择:

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中的一个sn-p:

 <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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2012-07-05
    相关资源
    最近更新 更多