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中的消息级别授权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国际运输备案登记(国际运输备案)
- 下一篇: 业务的可变性和不可变性分析_不可变性真的