ActivityMQ的自定义安全插件


上一节提到了ActivityMQ的两种安全插件

  • Simple Authentication(简单的身份验证)

  • JAAS authentication(JAAS身份验证)

最先考虑的应该是实现JAAS身份认证,如果一些需求JAAS不能满足的话,就要采取自定义安全插件的方法


1.首先写一个自定义的Broker,继承BrokerFilter,实现addConnection方法,实现的功能是只允许特定的ip访问Broker

public class IPAuthenticationBroker extends BrokerFilter {List<String> allowedIPAddresses;
Pattern pattern = Pattern.compile("^/([0-9\\.]*):(.*)"); public IPAuthenticationBroker(Broker next, List<String>allowedIPAddresses) {super(next);this.allowedIPAddresses = allowedIPAddresses;
}
public void addConnection(ConnectionContextcontext, ConnectionInfo info) throws Exception {
Filter connections based on IP addressString remoteAddress = context.getConnection().getRemoteAddress(); Matcher matcher = pattern.matcher(remoteAddress);if (matcher.matches()) {String ip = matcher.group(1);if (!allowedIPAddresses.contains(ip)) {throw new SecurityException("Connecting from IP address "+ ip + " is not allowed" );
}
} else {throw new SecurityException("Invalid remote address "+ remoteAddress);
}super.addConnection(context, info);}
}

2.然后写一个自定义插件类,实现BrokerPlugin的installPlugin方法

注意:这个方法返回一个BrokerFilter的实现类,可以理解这里有很多个Filter,每次Broker经过一个Filter返回他自己,在经过下一个Filter再返回他自己,这点与javaee的controller是一样的;还有一定要有构造函数参数的getter和setter方法,和spring注入一致

public class IPAuthenticationPlugin implements BrokerPlugin { List<String> allowedIPAddresses;
public Broker installPlugin(Broker broker) throws Exception {
return new IPAuthenticationBroker(broker, allowedIPAddresses); }public List<String> getAllowedIPAddresses() {return allowedIPAddresses;
}
Create instance of custom classpublic void setAllowedIPAddresses(List<String> allowedIPAddresses) { this.allowedIPAddresses = allowedIPAddresses;
} }

3.接着我们只需要把这个plugin添加到activitymq.xml中就可以了


<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data"><plugins><bean xmlns="http://www.springframework.org/schema/beans"
id="ipAuthenticationPlugin" class="org.apache.activemq.book.ch6.IPAuthenticationPlugin"><property name="allowedIPAddresses"><list><value>127.0.0.1</value></list></bean></plugins></property>
</broker>

当然,这个maven项目也要mvn clean install,打包到maven仓库里面,然后把ipAuthenticationPlugin的类的路径改掉就能正常运行了

ActiveMQ的自定义安全插件(十)相关推荐

  1. Soul网关源码阅读(十)自定义简单插件编写

    Soul网关源码阅读(十)自定义简单插件编写 简介     综合前面所分析的插件处理流程相关知识,此次我们来编写自定义的插件:统计请求在插件链中的经历时长 编写准备     首先我们先探究一下,一个P ...

  2. 自定义Gradle插件(十)

    目录 1. 脚本插件 2. 对象插件 在build.gradle中写Plugin 创建单独的 "buildSrc" Module 上传远端maven仓库 gradle插件分成脚本插 ...

  3. typecho图标_Typecho微信自定义分享插件WeChatShare 自定义标题描述小图标

    前言 张小龙带领微信走进了大众的生活,在十亿用户的生活里扎根.于是我们不管是阅读.聊天.看视频,基本上都离不开微信.好东西分享给用户,第一时间想到的肯定是微信. 很久以前,一个网页分享到微信聊天,系统 ...

  4. 自定义maven插件:自动生成API的word文档

    继上次开发完Maven插件开发:根据库表生成实体类&根据实体类生成库表之后,博主对开发maven插件喜爱得一塌糊涂.这不,今天给大家带来了<自定义maven插件:自动生成API的word ...

  5. chrome 窗体高度_Chrome窗口大小自定义调节插件下载_Chrome窗口大小自定义调节插件官方下载-太平洋下载中心...

    Chrome窗口大小自定义调节插件是一款可以设置浏览器窗口大小的Chrome扩展,安装Chrome窗口大小自定义调节插件后可以快速调节chrome的窗口大小,用户可以将窗口调节为320x480.480 ...

  6. 使用AndroidStudio创建自定义gradle插件并被引用实战例子

    项目中引入自定义Gradle plugin一般有三种方法: 直接写在 build.gradle中. plugin源码放到rootProjectDir/buildSrc/src/main/groovy目 ...

  7. Android如何自定义Gradle插件

    Android-如何自定义gradle插件 自定义gradle插件可以实现定制自己的构建流程,以达到复用目的: ##1. 自定义插件方式 自定义插件有三种方式 添加脚步 在你的app项目的build. ...

  8. Android组件化开发实践(九):自定义Gradle插件

    本文紧接着前一章Android组件化开发实践(八):组件生命周期如何实现自动注册管理,主要讲解怎么通过自定义插件来实现组件生命周期的自动注册管理. 1. 采用groovy创建插件 新建一个Java L ...

  9. 企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件

    如何Jenkins自定义安装插件? 接上一篇:企业实战05_Jenkins创建管理员用户https://blog.csdn.net/weixin_40816738/article/details/90 ...

最新文章

  1. 关于JAVA的String类的一些方法
  2. Nginx支持CGI
  3. Jenkins之Pipeline流水线构建项目
  4. mysql主库宕机能写吗_MYSQL主主切换(主库宕机)_MySQL
  5. seaborn 0.9 中文文档翻译完成 | ApacheCN
  6. 数值优化:计算基本理论
  7. python做一个浏览器_用python做一个简单的浏览器
  8. go语言学习网站大全
  9. Linux系统中xz命令用法详解(压缩和解压缩)
  10. numpy_10 思维导图
  11. Pyhton零基础投喂(综合练习:2:论⽂作者统计)
  12. 华为锁屏后微信无法连接服务器,华为手机锁屏时无法接收微信消息怎么办?
  13. 为什么要进行实名认证?如何实名认证?
  14. JQuery ----Reset()方法
  15. Bailian2755 神奇的口袋【递归+DP】
  16. Spark(四)— Spark Streaming
  17. android 分享纯图片到QQ空间实现方式
  18. excel字符串和单元格拼接_excel拼接函数_excel使用公式进行文本拼接的方法
  19. 路由器WAN网口可接入192.168.0.1管理无线密码
  20. [HEOI 2012] 采花

热门文章

  1. 《openssl 编程》之错误处理
  2. Shell case esac语句
  3. 性能优化实战|使用eBPF代替iptables优化服务网格数据面性能
  4. 实战|QUIC协议助力腾讯业务提速30%
  5. 阿里二面:你来设计一下 Flink 性能调优?
  6. 力扣--统计全1子矩阵
  7. 【今晚七点】:对话余世兵——从OnVideo到快手云剪
  8. 火山引擎视频云科技原力峰会即将开启,一起乘云 · 瞰世界
  9. 【今晚7点半】:主编对话Netless白板创始人伍双
  10. 火山引擎视频云:从toC到toB,如何将最好的技术开放出去