繁体   English   中英

jboss 7忽略安全域选项,并要求以加密形式输入密码

[英]jboss 7 ignores security-domain options and requires password in encrypted form

我使用JBoss 7.1.1和JavaEE6。密码以加密形式存储在sql数据库中,即“ X8oyfUbUbfbEqI9IWvAW1 / 3”而不是“ admin”。 但是,如果尝试使用“管理员”密码登录,则每次都会被拒绝-服务器要求输入“ X8oyfUbUbfbEqI9IWvAW1 / 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"/>

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

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM