Apache ActiveMQ中的消息级别授权
尽管上一篇文章介绍了“代理级身份验证”,但该博文是关于消息级更严格的授权的。
我在现实生活中的项目中并没有这么精细的授权,但是我想自己做,并为读者提供一个教程,以扩展他们对ActiveMQ中安全性的了解并简化他们的工作。
有时,限制对代理的访问以及在某些消息之上进行访问可能很有用。 ActiveMQ没有开箱即用的插件。 您必须自己或多或少地实施它。
使用Maven创建Java项目
您必须首先基于Maven创建一个新的Java项目。
在下一步中,我建议将activemq-all maven依赖项添加到项目中(与activemq安装版本相同),以确保使用正确的导入和类。
此处提供了所有activemq版本和相应的maven依赖片段的列表。
之后,是时候向以前创建的项目中添加新的Java类了。 我的消息级别策略类如下所示:
package com.schulz.bennet.activemq;import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.command.Message;
import org.apache.activemq.security.MessageAuthorizationPolicy;public class MyMessageAuthorizationPolicy implements MessageAuthorizationPolicy {public boolean isAllowedToConsume(ConnectionContext ctx, Message m) {return ctx.getUserName().equals("admin");}
}
注意:您的类必须实现MessageAuthorizationPolicy接口,并且还必须向类中添加公共的boolean isAllowedToConsume(…)方法。 在这种方法中,您可以实施逻辑来决定允许谁使用您的消息。 在我的示例中,仅允许管理员使用。
将策略添加到ActiveMQ
打开一个控制台,CD进入您的项目文件夹,并通过调用mvn clean install命令来构建您的maven应用程序。
现在是时候将jar文件从目标项目文件夹复制到ActiveMQ安装的lib文件夹,以使其可用于ActiveMQ。 在最后的配置步骤中,您必须将以下代码段添加到activemq.xml的代理标记中:
<messageAuthorizationPolicy><bean class="com.schulz.bennet.MyMessageMessageAuthorizationPolicy"xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>
提示:不要忘记将其更改为完全合格的类名,而不是我的;-)
通过使用消息来测试策略
首先,您必须通过控制台上的以下命令启动代理:
./bin/activemq start
通过使用activemq脚本使用示例消息来检查您的策略是否正常运行:
./bin/activemq consumer --user admin --password password
这应该起作用,因为以前创建的策略类允许用户admin使用消息。 除此之外,与用户admin以外的其他用户一起使用消息应该是不可能的。 您可以使用其他用户进行测试:
./bin/activemq consumer --user consumer --password password
该使用者不应使用任何单个消息。
如果您有任何疑问,想要我的源代码,YouTube视频或类似的东西,只需发表评论或通过Twitter与我联系。 享受ActiveMQ的乐趣!
翻译自: https://www.javacodegeeks.com/2016/07/message-level-authorization-apache-activemq.html
Apache ActiveMQ中的消息级别授权相关推荐
- JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系...
一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...
- activemq如何保证消息按顺序消费
生产者消费者模式/点到点模式/队列模式: 即生产者生产若干消息,由若干消费者共同消费消息,消息不重复消费. 发布订阅模式/主题模式:(pub/sub) 生产者生产若干消息,每个消费者都消费全部的消息. ...
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache ...
- activemq消息持久化_ActiveMQ 5.x中的消息持久性
activemq消息持久化 我被问了很多关于ActiveMQ如何存储消息(或在某些情况下不存储)的基本知识. 这是它的高级解释. 注意,上下文在JMS中. 如果您使用ActiveMQ的非JMS客户端( ...
- ActiveMQ 5.x中的消息持久性
我被问了很多关于ActiveMQ如何存储消息(或在某些情况下不存储)的基本知识. 这是它的高级解释. 注意,上下文在JMS中. 如果您使用ActiveMQ的非JMS客户端(即STOMP,AMQP,MQ ...
- activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...
ActiveMQ安装 1. 下载资源 ActiveMQ官网: 版本说明 ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用. ActiveMQ5.9.x及以下版本使用JDK1.7即可 ...
- activemq中怎么知道推送消息是否成功_ActiveMQ安装试用示列
ActiveMQ安装配置和使用简例 ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件.以Windows操作系统为例,本文简述了ActiveMQ的安装配置和 ...
- ActiveMQ中消费者是如何接收消息的(二)
上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见<ActiveMQ中消费者是如何接收消息的(一)>http://manzhizhen.iteye.com/blog/209413 ...
- 短信验证码整合项目中 含消息服务器(分布式项目、activeMQ
分析 黑线:短信发送验证码的实现 红线:用户填写用户信息以及验证验证码是否正确完成注册 基本步骤(下面有详细实现: 前端controller 前端service 使用到web-user(war).se ...
最新文章
- 计算机等级考试模拟题卷子,二级VB模拟试卷 1
- 在本地实现完成多台服务器之间文件拷贝
- 【Kafka】Kafka 增量 Rebalancing: Support and Policies
- python模拟seo_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)_天津SEO...
- CAS单点登出实现案例
- 微服务(Microservices)概述 与 Spring Cloud 简介
- 苹果绕过ID_三分钟教你绕过苹果ID锁,救你的板砖。-海绵宝宝的蟹黄堡
- 基于SSM的大学生就业信息管理系统
- 智能电视机顶盒开发记录
- 【读书总结】 《你只是看起来很努力》——致那段应该奋斗的岁月
- H5页面微信自动登录,和微信页面自定义分享样式
- 今天搞毕设了么?——3.29 audioread读取音频文件
- i386, x86, x86_64, IA-32, IA-64, 安腾, AMD64 的关系是什么?
- C# 学习笔记入门篇(上)
- 支付宝支付开发——当面付条码支付和扫码支付
- snabbdom源码粗读
- Euraka服务端简单配置
- 为小白打造的MySQL安装(包括可视化工具navicat)全步骤
- 经验分享丨计算机专业的女孩子比较合适做什么工作?
- 基于 Scrapy-Redis 全国房源信息抓取系统
热门文章
- Spring 获取 request 的几种方法及其线程安全性分析
- Tomcat 使用apr优化
- 用赫夫曼树进行文件的压缩
- win10安装dockerx docker的常见命令 可以子腾讯云上做做练习
- (转)如何查看java本地方法
- java分布式对象——远程方法中的参数和返回值+远程对象激活
- spring注解注入IOC
- java xmpp_Java XMPP负载测试工具
- maven 构建增量包_使用Maven进行增量构建
- java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...