环境:apache-activemq-5.16.5
认证 (authentication) 和授权 (authorization)
activeMQ有两种认证方式:
1、编写myBroker
package mqtt_plugin;
import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.BrokerFilter;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.command.ConnectionInfo;
public class MyAuthenticationBroker extends BrokerFilter {
public MyAuthenticationBroker(Broker next) {
super(next);
// TODO Auto-generated constructor stub
}
@Override
public void addConnection(ConnectionContext context, ConnectionInfo info) throws Exception {
// TODO Auto-generated method stub
// context.getSecurityContext()
System.out.println("info.getUserName():"+info.getUserName());
System.out.println("info.getPassword():"+info.getPassword());
super.addConnection(context, info);
}
}
2、编写BrokerPlugin
package mqtt_plugin;
import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.BrokerPlugin;
public class MyAuthenticationPlugin implements BrokerPlugin{
@Override
public Broker installPlugin(Broker arg0) throws Exception {
// TODO Auto-generated method stub
MyAuthenticationBroker broker = new MyAuthenticationBroker(arg0);
return broker;
}
}
3、导出成jar
4、将导出的jar放入:apache-activemq-5.16.5\lib
5、修改apache-activemq-5.16.5\conf\activemq.xml
<plugins>
<bean xmlns="http://www.springframework.org/schema/beans" id="MyAuthenticationPlugin" class="mqtt_plugin.MyAuthenticationPlugin">
</bean>
</plugins>
如果有参数可以传递为:
<plugins>
<bean xmlns="http://www.springframework.org/schema/beans" id="MyAuthenticationPlugin" class="mqtt_plugin.MyAuthenticationPlugin">
<property name="secretUrl">
<value>http://127.0.0.1:8082/activeMQ/checkSecret</value>
</property>
<property name="allowedMac">
<list>
<value>74-27-EA-19-FD-32</value>
</list>
</property>
</bean>
</plugins>
6、启动后接入以查看效果