有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JBoss AS 7.1数据源如何加密密码

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

现在在JBossAS7.1中,数据源是在standalone中定义的。xml或域。xml。 AS 7.1中的加密密码放在哪里

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


共 (5) 个答案

  1. # 1 楼答案

    在CentOS 6.3版JBoss-EAP-6.0.0环境中,这只适用于code=“SecureIdentity”, 使用picketbox-4.0.9。最后的红帽子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

  2. # 2 楼答案

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

    希望这有帮助, 马特奥

  3. # 3 楼答案

    使用JAR创建简单项目( jboss-logging-3.1.4。GA-redhat-2。罐子 桩箱-4.1.1。最后的红帽子1。罐子 picketbox-commons-1.0.0。期末考试-红帽-3。罐子 桩箱-infinispan-4.1.1。最后的红帽子1。jar)并使用输入参数运行自定义类:

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

    输出将为:编码密码:3d5bc094c128

  4. # 4 楼答案

    在AS7中,您可以使用SecureIdentityLogin模块添加加密的密码域。例如,您可以在单机版中定义安全域。xml或域。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>
    

    然后,您可以将此安全域添加到您的特定数据源中,该数据源在单机版中使用此userid/pwd组合。xml或域。xml:

      <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
    

    这将返回可在安全域中使用的加密密码

    您可以阅读更多关于JBossAS7安全子系统here的信息。由于开源岩石,您可以在SecureIdentityLogin的源代码中看到编码代码是如何工作的。您将在源代码中注意到它使用Blowfish进行加密

  5. # 5 楼答案

    以下是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>