17

在 JBoss AS 5 中,我在 *-ds.xml 中定义了一个数据源,但将用户名/加密密码放在 *-jboss-beans.xml 中。

现在在 JBoss AS 7.1 中,数据源在standalone.xml 或 domain.xml 中定义。在 AS 7.1 中我应该把加密密码放在哪里?

换句话说,在 AS 7 中明文密码是如何加密和保护的?

4

5 回答 5

40

在 AS7 中,您可以使用 SecureIdentityLoginModule 添加加密的密码域。例如,您可以在standalone.xml 或 domain.xml 中定义一个安全域:

<security-domain name="EncryptedPassword">
  <authentication>
    <login-module code="SecureIdentity" flag="required">
      <module-option name="username" value="test"/>
      <module-option name="password" value="encrypted_password"/>
    </login-module>
  </authentication>
</security-domain>

然后您可以在您的特定数据源中添加此安全域,该数据源在standalone.xml 或 domain.xml 中使用此 userid/pwd 组合:

  <datasource ... >
       .....
       <security>
              <security-domain>EncryptedPassword</security-domain>
       </security>
  </datasource>

要加密密码本身,您可以运行此命令(请验证您的特定 AS7 下载中的 picketbox jar 和 logging jar 的版本以相应地替换):

java -cp $JBOSS_HOME/modules/org/picketbox/main/picketbox-4.0.6.<beta|final>.jar:$JBOSS_HOME/modules/org/jboss/logging/main/jboss-logging-3.1.0.<some_version>.jar:$CLASSPATH org.picketbox.datasource.security.SecureIdentityLoginModule password

这将返回一个加密的密码,您可以在您的安全域中使用该密码。

您可以在此处阅读有关 JBoss AS7 安全子系统的更多信息。由于开源摇滚,您可以在SecureIdentityLogin的源代码中看到编码代码是如何工作的。Blowfish您会在它用于加密的源代码中注意到。

于 2012-05-10T22:03:48.203 回答
6

以下是 Jboss AS-7 的完整安全域配置:

     <security-domains>
        <!--  Security Setting's --> 
        <security-domain name="encryptedSecurity" cache-type="default">
            <authentication>
                <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
                <module-option name="username" value="user_name"/>
                <module-option name="password" value="encrypted_password"/>
                <module-option name="managedConnectionFactoryName" value="jboss.jca:service=LocalTxCM,name=dataSource-1-PoolName,dataSource-2-PoolName"/>
            </login-module>
            </authentication>
        </security-domain>
于 2013-03-18T11:50:24.243 回答
4

谁有兴趣在 Windows 上运行它(在我的情况下是在 JBoss EAP 6.4 上......)

set JBOSS_HOME=C:\dev\jboss\jboss-eap-6.4
set MYPATH=%JBOSS_HOME%\modules\system\layers\base\org\picketbox\main\picketbox-4.1.1.Final-redhat-1.
jar;%JBOSS_HOME%\modules\system\layers\base\org\jboss\logging\main\jboss-logging-3.1.4.GA-redhat-2.jar;
java -classpath %MYPATH% org.picketbox.datasource.security.SecureIdentityLoginModule SecretPass

Encoded password: 13e0362237c93a9cda89f5b3da271521

希望这会有所帮助,马特奥

于 2016-08-01T19:47:04.713 回答
2

在 CentOS 版本 6.3 的环境中,JBoss-EAP-6.0.0 这只适用于 code="SecureIdentity",使用 picketbox-4.0.9.Final-redhat-1.jar 进行密码加密。

<security-domain name="some-ds-EncryptedPassword">
  <authentication>
    <login-module code="SecureIdentity" flag="required">
      <module-option name="username" value="username"/>
      <module-option name="password" value="encrypted_password"/>
    </login-module>
  </authentication>
</security-domain>

code="SecureIdentityLogin" 给出“PB00024:访问被拒绝:未经身份验证的呼叫者:null”。

来源:https ://docs.jboss.org/author/display/AS7/Security+subsystem+configuration

于 2013-03-26T15:15:57.773 回答
2

使用 jars 创建简单的项目(jboss-logging-3.1.4.GA-redhat-2.jar picketbox-4.1.1.Final-redhat-1.jar picketbox-commons-1.0.0.final-redhat-3.jar picketbox -infinispan-4.1.1.Final-redhat-1.jar)并使用输入参数运行自定义类:

public class Test {

    public static void main(String[] args) throws Exception {
        new org.picketbox.datasource.security.SecureIdentityLoginModule()
                .main(args);

    }

}

输出将是:编码密码:3d5bc094c128...

于 2016-06-17T11:51:44.277 回答