Wildfly中pooled-connection-factory如何使用哈希密码替代明文密码?
远程JMS连接池配置哈希密码失败问题解答
问题场景
我按照相关指南配置远程WildFly JMS监听器,功能正常。但希望在pooled-connection-factory中使用哈希密码替代明文密码,尝试填入哈希值后无法连接,请问是否可以直接使用管理用户的加密密码?
报错信息
org.jboss.resteasy.spi.UnhandledException: javax.jms.JMSSecurityException: AMQ229031: Unable to validate user from /127.0.0.1:61662. Username: testuser; SSL certificate subject DN:
配置代码
<pooled-connection-factory name="remote-artemis" entries="java:/jms/remoteCF" connectors="remote-artemis" user="testuser" password="16b322f4cfe1023d67ecc13d626cb32c"/>
解答
不能直接使用管理用户的哈希密码
Artemis的JMS连接认证逻辑是明文密码校验,它不会自动解密哈希字符串。管理用户的哈希密码仅用于WildFly本地控制台、CLI的认证,和JMS连接的认证机制不互通,直接填入会导致服务器把哈希值当作明文密码校验,自然匹配失败。正确的密码加密存储方案:使用WildFly安全Vault
要实现配置中密码的加密存储,需通过WildFly的安全Vault工具处理:
- 用WildFly自带的
vault.sh(Linux)或vault.bat(Windows)创建安全Vault,将明文密码加密存储到指定的密钥库中。 - 在WildFly的配置文件中添加安全Vault的引用配置,让服务器能识别并解密Vault中的值。
- 在
pooled-connection-factory的password字段中,用${VAULT::vault-block::attribute-name::1}格式引用Vault中存储的加密密码。
内容的提问来源于stack exchange,提问作者mathan8888
相关产品推荐
相关产品推荐

