ActiveMQ的自定义安全插件(十)
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的自定义安全插件(十)相关推荐
- Soul网关源码阅读(十)自定义简单插件编写
Soul网关源码阅读(十)自定义简单插件编写 简介 综合前面所分析的插件处理流程相关知识,此次我们来编写自定义的插件:统计请求在插件链中的经历时长 编写准备 首先我们先探究一下,一个P ...
- 自定义Gradle插件(十)
目录 1. 脚本插件 2. 对象插件 在build.gradle中写Plugin 创建单独的 "buildSrc" Module 上传远端maven仓库 gradle插件分成脚本插 ...
- typecho图标_Typecho微信自定义分享插件WeChatShare 自定义标题描述小图标
前言 张小龙带领微信走进了大众的生活,在十亿用户的生活里扎根.于是我们不管是阅读.聊天.看视频,基本上都离不开微信.好东西分享给用户,第一时间想到的肯定是微信. 很久以前,一个网页分享到微信聊天,系统 ...
- 自定义maven插件:自动生成API的word文档
继上次开发完Maven插件开发:根据库表生成实体类&根据实体类生成库表之后,博主对开发maven插件喜爱得一塌糊涂.这不,今天给大家带来了<自定义maven插件:自动生成API的word ...
- chrome 窗体高度_Chrome窗口大小自定义调节插件下载_Chrome窗口大小自定义调节插件官方下载-太平洋下载中心...
Chrome窗口大小自定义调节插件是一款可以设置浏览器窗口大小的Chrome扩展,安装Chrome窗口大小自定义调节插件后可以快速调节chrome的窗口大小,用户可以将窗口调节为320x480.480 ...
- 使用AndroidStudio创建自定义gradle插件并被引用实战例子
项目中引入自定义Gradle plugin一般有三种方法: 直接写在 build.gradle中. plugin源码放到rootProjectDir/buildSrc/src/main/groovy目 ...
- Android如何自定义Gradle插件
Android-如何自定义gradle插件 自定义gradle插件可以实现定制自己的构建流程,以达到复用目的: ##1. 自定义插件方式 自定义插件有三种方式 添加脚步 在你的app项目的build. ...
- Android组件化开发实践(九):自定义Gradle插件
本文紧接着前一章Android组件化开发实践(八):组件生命周期如何实现自动注册管理,主要讲解怎么通过自定义插件来实现组件生命周期的自动注册管理. 1. 采用groovy创建插件 新建一个Java L ...
- 企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件
如何Jenkins自定义安装插件? 接上一篇:企业实战05_Jenkins创建管理员用户https://blog.csdn.net/weixin_40816738/article/details/90 ...
最新文章
- 关于JAVA的String类的一些方法
- Nginx支持CGI
- Jenkins之Pipeline流水线构建项目
- mysql主库宕机能写吗_MYSQL主主切换(主库宕机)_MySQL
- seaborn 0.9 中文文档翻译完成 | ApacheCN
- 数值优化:计算基本理论
- python做一个浏览器_用python做一个简单的浏览器
- go语言学习网站大全
- Linux系统中xz命令用法详解(压缩和解压缩)
- numpy_10 思维导图
- Pyhton零基础投喂(综合练习:2:论⽂作者统计)
- 华为锁屏后微信无法连接服务器,华为手机锁屏时无法接收微信消息怎么办?
- 为什么要进行实名认证?如何实名认证?
- JQuery ----Reset()方法
- Bailian2755 神奇的口袋【递归+DP】
- Spark(四)— Spark Streaming
- android 分享纯图片到QQ空间实现方式
- excel字符串和单元格拼接_excel拼接函数_excel使用公式进行文本拼接的方法
- 路由器WAN网口可接入192.168.0.1管理无线密码
- [HEOI 2012] 采花