Mosquitto auth插入ACL检查不会被调用订阅

时间:2016-01-13 11:27:40

标签: acl mqtt mosquitto

我正在使用mosquitto 1.4.5版本。

我正在尝试使用单独的插件对mosquitto broker主题订阅进行ACL检查,并使用提供的标头进行发布。

为了测试auth插件的集成,我刚刚使用提供的mosquitto auth插件标头打印了一条消息( mosquitto_plugin.h )。

int mosquitto_auth_acl_check(void *user_data, const char *clientid, const char *username, const char *topic, int access)
{
   mosquitto_log_printf( MOSQ_LOG_INFO , "ACL Check called");
   return MOSQ_ERR_SUCCESS;
}

制作共享对象并更改配置文件的 auth_plugin 属性后,我尝试使用客户端模拟来查看“订阅”和“发布”是否会调用mosquitto_auth_acl_check。 我所意识到的是,尽管它在提供的标题评论中所说的内容,它永远不会被要求订阅。

在发布方案中,我可以看到记录了 ACL Check called 消息,因此可以假设它调用了该函数。

enter image description here

在订阅方案中,消息未被记录,因此我假设该函数未被调用。

enter image description here

什么原因可能不仅仅是为了订阅?

1 个答案:

答案 0 :(得分:4)

由于将通配符订阅与通配符acl进行比较相对困难,因此目前尚未调用订阅。

在将消息即将发送到客户端时检查ACL,这相当于同样的事情,但效率不高。

相关问题