尽管上一篇文章介绍了“代理级身份验证”,但该博文是关于消息级更严格的授权的。

我在现实生活中的项目中并没有这么精细的授权,但是我想自己做,并为读者提供一个教程,以扩展他们对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中的消息级别授权相关推荐

  1. JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系...

    一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...

  2. activemq如何保证消息按顺序消费

    生产者消费者模式/点到点模式/队列模式: 即生产者生产若干消息,由若干消费者共同消费消息,消息不重复消费. 发布订阅模式/主题模式:(pub/sub) 生产者生产若干消息,每个消费者都消费全部的消息. ...

  3. Apache ActiveMQ实战(1)-基本安装配置与消息类型

    ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache ...

  4. activemq消息持久化_ActiveMQ 5.x中的消息持久性

    activemq消息持久化 我被问了很多关于ActiveMQ如何存储消息(或在某些情况下不存储)的基本知识. 这是它的高级解释. 注意,上下文在JMS中. 如果您使用ActiveMQ的非JMS客户端( ...

  5. ActiveMQ 5.x中的消息持久性

    我被问了很多关于ActiveMQ如何存储消息(或在某些情况下不存储)的基本知识. 这是它的高级解释. 注意,上下文在JMS中. 如果您使用ActiveMQ的非JMS客户端(即STOMP,AMQP,MQ ...

  6. activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...

    ActiveMQ安装 1. 下载资源 ActiveMQ官网: 版本说明 ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用. ActiveMQ5.9.x及以下版本使用JDK1.7即可 ...

  7. activemq中怎么知道推送消息是否成功_ActiveMQ安装试用示列

    ActiveMQ安装配置和使用简例 ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件.以Windows操作系统为例,本文简述了ActiveMQ的安装配置和 ...

  8. ActiveMQ中消费者是如何接收消息的(二)

    上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见<ActiveMQ中消费者是如何接收消息的(一)>http://manzhizhen.iteye.com/blog/209413 ...

  9. 短信验证码整合项目中 含消息服务器(分布式项目、activeMQ

    分析 黑线:短信发送验证码的实现 红线:用户填写用户信息以及验证验证码是否正确完成注册 基本步骤(下面有详细实现: 前端controller 前端service 使用到web-user(war).se ...

最新文章

  1. 计算机等级考试模拟题卷子,二级VB模拟试卷 1
  2. 在本地实现完成多台服务器之间文件拷贝
  3. 【Kafka】Kafka 增量 Rebalancing: Support and Policies
  4. python模拟seo_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)_天津SEO...
  5. CAS单点登出实现案例
  6. 微服务(Microservices)概述 与 Spring Cloud 简介
  7. 苹果绕过ID_三分钟教你绕过苹果ID锁,救你的板砖。-海绵宝宝的蟹黄堡
  8. 基于SSM的大学生就业信息管理系统
  9. 智能电视机顶盒开发记录
  10. 【读书总结】 《你只是看起来很努力》——致那段应该奋斗的岁月
  11. H5页面微信自动登录,和微信页面自定义分享样式
  12. 今天搞毕设了么?——3.29 audioread读取音频文件
  13. i386, x86, x86_64, IA-32, IA-64, 安腾, AMD64 的关系是什么?
  14. C# 学习笔记入门篇(上)
  15. 支付宝支付开发——当面付条码支付和扫码支付
  16. snabbdom源码粗读
  17. Euraka服务端简单配置
  18. 为小白打造的MySQL安装(包括可视化工具navicat)全步骤
  19. 经验分享丨计算机专业的女孩子比较合适做什么工作?
  20. 基于 Scrapy-Redis 全国房源信息抓取系统

热门文章

  1. Spring 获取 request 的几种方法及其线程安全性分析
  2. Tomcat 使用apr优化
  3. 用赫夫曼树进行文件的压缩
  4. win10安装dockerx docker的常见命令 可以子腾讯云上做做练习
  5. (转)如何查看java本地方法
  6. java分布式对象——远程方法中的参数和返回值+远程对象激活
  7. spring注解注入IOC
  8. java xmpp_Java XMPP负载测试工具
  9. maven 构建增量包_使用Maven进行增量构建
  10. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...