基于 MongoDB 进行授权
EMQX 支持通过集成 MongoDB 进行授权验证,即可以将客户端的权限列表存储在 MongoDB 数据库中。
前置准备
熟悉 EMQX 授权基本概念
数据结构与查询语句
MongoDB 认证器支持将权限数据存储为 MongoDB 文档。用户需要提供一个查询语句模板,且确保查询结果包含以下字段:
-
permission
: 用于指定操作权限,可选值有allow
和deny
。 -
action
: 用于指定当前规则适用于哪些操作,可选值有publish
、subscribe
和all
。 -
topics
: 用于指定当前规则适用的主题列表,可以使用主题过滤器和 主题占位符 。 -
qos
:(可选)用于指定当前规则适用的消息 QoS,可选值有0
、1
、2
,也可以使用数字数组同时指定多个 QoS。默认为所有 QoS。 -
retain
: (可选)用于指定当前规则是否支持发布保留消息,可选值有0
、1
,或true
、false
。默认允许保留消息。
禁止用户名为
emqx_u
的客户端发布主题为
t/1
且 QoS 值为
1
的消息:
相应的配置参数如下:
TIP
当系统中有大量用户时,请确保查询使用的集合已优化并使用有效的索引,以提升大量发布订阅时的数据查找速度并降低 EMQX 负载。
配置项
此认证器支持 3 种部署模式的 MongoDB。
MongoDB Authorizer 必需有
type = mongodb
。
有三种不同的连接模式:
Standalone: