JBoss应用服务器7.1 - 数据源如何加密密码(JBoss AS 7.1 - datasour

2019-07-29 08:30发布

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

现在的JBoss AS 7.1,数据源是standalone.xml或domain.xml中定义。 我应该把加密的口令在AS 7.1?

换句话说,如何清晰的口令加密,并固定在AS 7?

Answer 1:

在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中该用户ID /密码组合的特定数据源添加此安全域:

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

要加密密码本身,您可以运行此命令(请核实picketbox罐子,罐子记录的版本在您的特定AS7下载相应替代):

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加密。



Answer 2:

下面是完整的安全域配置对于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>


Answer 3:

对于谁是有兴趣在具有在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

希望这有助于马特奥



Answer 4:

在环境CentOS版本6.3,JBoss的EAP-6.0.0这个只能用代码= “SecureIdentity” 工作,用picketbox-4.0.9.Final - 红帽,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>

代码=“SecureIdentityLogin”给出“PB00024:拒绝访问:未认证调用者:空”。

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



Answer 5:

创建瓶(JBoss的日志记录-3.1.4.GA-的redhat-2.jar picketbox-4.1.1.Final-的redhat-1.jar picketbox-公地1.0.0.final-的redhat-3.jar picketbox简单的项目-infinispan-4.1.1.Final - 红帽-1.jar),并与输入ARGS运行自定义类:

public class Test {

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

    }

}

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



文章来源: JBoss AS 7.1 - datasource how to encrypt password