acl - Mosquitto 身份验证插件 ACL 检查不会被调用订阅

标签 acl mqtt mosquitto

我正在使用 mosquitto 1.4.5 版本。

我正在尝试让一个单独的插件对 mosquitto 代理的主题订阅进行 ACL 检查,并使用提供的 header 进行发布。

只是为了测试 auth 插件的集成,我刚刚使用提供的 mosquitto auth 插件 header (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。 我意识到,尽管它在提供的 header 评论中说了些什么,但它永远不会被要求订阅。

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

enter image description here

在订阅场景中,消息没有被记录,因此我假设该函数没有被调用。

enter image description here

它不被调用仅用于订阅的原因可能是什么?

最佳答案

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

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

关于acl - Mosquitto 身份验证插件 ACL 检查不会被调用订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765476/

相关文章:

javascript - 如何将passport-jwt与ACL(访问控制列表)模式结合起来

mqtt - 如何为 mosquitto 经纪人创建自己的插件?

c++ - 带有 ROS Jade 未定义引用的 Mosquitto

Python-Mysql NameError : global name 'save_to_db' is not defined 错误

macos - 在 MacOS 中仅删除一个用户的 ACL 条目?出奇地困难

mysql - 在 Node.js 中支持 MySQL 的 ACL

.net - 设置用户/角色管理系统 - Multi-Tenancy

node.js - MQTTjs 库的无序输出

azure - 通过 MQTT 向 Azure IotCentral 发送消息

javascript - 无法运行 MQTT JavaScript 客户端