好的,这就是我完成此任务的方式(我正在开发JBOSS 4.2.1 GA和 Oracle,因此版本和数据库供应商之间的某些内容可能会有所不同):
您需要扩展AbstractPasswordCredentialLoginModule。
我将我的(称为PGPLoginModule)基于称为 SecureIdentityLoginModule 的开箱即用实现,它与我的唯一区别是解码和编码方法使用不同的加密算法和过程(我的使用 PGP 证书解密属性文件,其中密码被存储)类似于本文中的解释,但您可以使用任何您喜欢的方法。
您需要在 jboss 库文件夹中添加以下 jar 以解决依赖关系:
- [JBOSS_HOME] /lib/jboss-common.jar
- [JBOSS_HOME] /lib/jboss-jmx.jar
- [JBOSS_HOME] /server/default/lib/jbosssx.jar
- [JBOSS_HOME] /server/default/lib/jboss-jca.jar
您需要 JAR 您的课程并将 jar 放在以下任一位置:
- [JBOSS_HOME] /server/default/lib
或者
当您拥有它时,您需要在您在 jboss 的 login-config.xml 上定义的安全域上对其进行配置,以便它使用您的类(我的是org.company.resource.security.PGPLoginModule)而不是使用默认的类,因此它将看起来像:
<application-policy name="PGPDomain">
<authentication>
<login-module code="org.company.resource.security.PGPLoginModule" flag="required">
<module-option name="username">[DB_USER]</module-option>
<module-option name="password">[ENCTRYPTED_PASSWORD]</module-option>
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDS</module-option>
</login-module>
</authentication>
</application-policy>
请注意,根据您决定使用的强度和算法,您可能需要将Java Cryptography Extension Unlimited Strength Policy Files安装到您的 JRE。
我希望有人觉得它有用。