ActiveMQ学习笔记(四)——自定义身份认证(登录认证集成)

经典版和Artemis都有自己的用户系统和默认的登录认证逻辑,但是当需要和业务系统集成,共享同一套用户/角色时,就需要自定义身份认证了。这里简单记录一下实现思路。

一、ActiveMQ经典版

1、自定义身份认证插件

  • 新建maven工程,添加依赖

	org.apache.activemq
	activemq-broker
	5.15.12
	jar
  • 添加类,实现BrokerFilter的addConnection方法,完成登录验证。如果验证不通过,直接抛SecurityException异常即可。
  • 添加类,实现BrokerPlugin的installPlugin方法,返回上一步的BrokerFilter对象。
  • 编译为jar,放到activemq的/lib目录下
  • 编辑conf/activemq.xml在broker节点下配置插件,重启activemq生效

    

2、自定义jaas登录模块

jaas本身是一个登录插件,它的登录模块又是插件化的,因此可以重新定义登录模块,实现自定义登录。

参考Artemis的jaas模块实现步骤。

二、ActiveMQ Artemis

1、自定义jaas登录模块

  • 创建工程,添加依赖artemis-server-2.12.0.jar
  • 实现javax.security.auth.spi.LoginModule接口

核心是要确定用户和角色,在commit()时并将信息添加到subject.getPrincipals()当中,logout()时清理掉。

  • 配置和应用插件

将登录模块打包为jar包,放到lib目录下,或<实例>/lib目录下。在<实例>/etc/login.config文件内,配置和应用插件,包括类名称、要传入的必要的参数等。

插件在用户登录时如有涉及新角色,需要在<实例>/etc/broker.xml的core/security-settings节点内,维护权限和角色的映射关系,否则角色没有对应权限

2、自定义Security Manager

参考帮助文档的Security章节末的范例

你可能感兴趣的:(消息队列,Java)