Spring Boot对接ActiveMQ认证不生效,如何配置账号密码强制校验?
你之前配置的Jetty权限约束仅作用于ActiveMQ Web控制台,对OpenWire等消息传输协议的连接认证完全不生效,且你当前的activemq.xml中没有配置Broker端的消息连接认证规则,因此不会校验客户端的账号密码。
第一步:配置ActiveMQ服务端认证
编辑conf/activemq.xml,在<broker>节点内部添加如下认证插件配置(可放在<transportConnectors>节点上方):
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> <!-- 保留原有其他配置不变,新增以下plugins节点 --> <plugins> <!-- 账号密码认证插件 --> <simpleAuthenticationPlugin> <users> <!-- 引用credentials.properties中的配置,也可以直接写死账号密码 --> <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="admins"/> </users> </simpleAuthenticationPlugin> <!-- 可选:配置队列/主题权限,可根据业务需求调整 --> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <!-- 配置所有队列/主题仅admin分组的用户可读写 --> <authorizationEntry queue=">" read="admins" write="admins" admin="admins"/> <authorizationEntry topic=">" read="admins" write="admins" admin="admins"/> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> </plugins> <!-- 原有transportConnectors等其他配置保持不变 --> </broker>
确认conf/credentials.properties文件中存在对应账号配置:
activemq.username=admin activemq.password=admin
修改完成后重启ActiveMQ服务端生效。
第二步:Spring Boot端验证效果
此时Spring Boot的ActiveMQ配置已会自动触发认证校验,你可以按以下场景验证:
- 删除
spring.activemq.user和spring.activemq.password配置行,项目启动连接ActiveMQ时会抛出JMSException类的认证错误 - 配置错误的账号或密码,同样会在连接时抛出认证失败异常
正确的application.properties参考配置:
server.port=9999 spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.packages.trust-all=true
内容的提问来源于stack exchange,提问作者GccGUY
相关产品推荐
相关产品推荐

