Apache ActiveMQ中的消息级别授权
盡管上一篇文章介紹了“代理級身份驗證”,但該博文是關(guān)于消息級更嚴(yán)格的授權(quán)的。
我在現(xiàn)實生活中的項目中并沒有這么精細(xì)的授權(quán),但是我想自己做,并為讀者提供一個教程,以擴(kuò)展他們對ActiveMQ中安全性的了解并簡化他們的工作。
有時,限制對代理的訪問以及在某些消息之上進(jìn)行訪問可能很有用。 ActiveMQ沒有開箱即用的插件。 您必須自己或多或少地實施它。
使用Maven創(chuàng)建Java項目
您必須首先基于Maven創(chuàng)建一個新的Java項目。
在下一步中,我建議將activemq-all maven依賴項添加到項目中(與activemq安裝版本相同),以確保使用正確的導(dǎo)入和類。
此處提供了所有activemq版本和相應(yīng)的maven依賴片段的列表。
之后,是時候向以前創(chuàng)建的項目中添加新的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");} }注意:您的類必須實現(xiàn)MessageAuthorizationPolicy接口,并且還必須向類中添加公共的boolean isAllowedToConsume(…)方法。 在這種方法中,您可以實施邏輯來決定允許誰使用您的消息。 在我的示例中,僅允許管理員使用。
將策略添加到ActiveMQ
打開一個控制臺,CD進(jìn)入您的項目文件夾,并通過調(diào)用mvn clean install命令來構(gòu)建您的maven應(yīng)用程序。
現(xiàn)在是時候?qū)ar文件從目標(biāo)項目文件夾復(fù)制到ActiveMQ安裝的lib文件夾,以使其可用于ActiveMQ。 在最后的配置步驟中,您必須將以下代碼段添加到activemq.xml的代理標(biāo)記中:
<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這應(yīng)該起作用,因為以前創(chuàng)建的策略類允許用戶admin使用消息。 除此之外,與用戶admin以外的其他用戶一起使用消息應(yīng)該是不可能的。 您可以使用其他用戶進(jìn)行測試:
./bin/activemq consumer --user consumer --password password該使用者不應(yīng)使用任何單個消息。
如果您有任何疑問,想要我的源代碼,YouTube視頻或類似的東西,只需發(fā)表評論或通過Twitter與我聯(lián)系。 享受ActiveMQ的樂趣!
翻譯自: https://www.javacodegeeks.com/2016/07/message-level-authorization-apache-activemq.html
總結(jié)
以上是生活随笔為你收集整理的Apache ActiveMQ中的消息级别授权的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国际运输备案登记(国际运输备案)
- 下一篇: 业务的可变性和不可变性分析_不可变性真的