JBoss AS 7.1 – datasource如何加密密码

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

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

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

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

        

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

   .....  EncryptedPassword   

要加密密码本身,您可以运行此命令(请在您的特定AS7下载中validationpicketbox jar和登录jar的版本以进行相应替换):

 java -cp $JBOSS_HOME/modules/org/picketbox/main/picketbox-4.0.6..jar:$JBOSS_HOME/modules/org/jboss/logging/main/jboss-logging-3.1.0..jar:$CLASSPATH org.picketbox.datasource.security.SecureIdentityLoginModule password 

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

您可以在此处阅读有关JBoss AS7安全子系统的更多信息。 从开源岩石开始 ,您可以在SecureIdentityLogin的源代码中看到编码代码的工作原理。 您将在源代码中注意到它使用Blowfish进行加密。

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

             

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

希望这会有所帮助,Matteo

在CentOS版本6.3环境中,JBoss-EAP-6.0.0仅使用code =“SecureIdentity”,使用picketbox-4.0.9.Final-redhat-1.jar进行密码加密。

         

code =“SecureIdentityLogin”给出“PB00024:拒绝访问:未经身份validation的调用者:null”。

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

使用jar创建简单项目(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 …