emqx-auth-mongo

emqx-auth-mongo

auth.mongo.type

Type Optional Value Default
enum single, unknown, sharded, rs single
说明

设置 MongoDB 的拓扑类型:

  • single: 单节点

  • unknown: 未知

  • sharded: 分片模式

  • rs: 副本模式 (replicated set)

auth.mongo.rs_set_name

Type Default
string -
说明

在使用 rs 模式的情况下,设置 rs 的名字。

auth.mongo.rs_set_name

Type Default
string 127.0.0.1:27017
说明

设置 MongoDB 服务的地址。如有多个使用逗号 , 分隔。

auth.mongo.pool

Type Default
integer 8
说明

设置 MongoDB 连接池的进程数。

auth.mongo.login

Type Default
string -
说明

设置 MongoDB 的用户名。

auth.mongo.password

Type Default
string -
说明

设置 MongoDB 的密码。

auth.mongo.auth_source

Type Default
string mqtt
说明

设置 MongoDB 的认证源数据库名。

auth.mongo.database

Type Default
string mqtt
说明

设置 MongoDB 的数据库名。

auth.mongo.query_timeout

Type Default
duration 5s
说明

设置访问 MongoDB 超时时间。

auth.mongo.ssl

Type Optional Value Default
enum true, false false
说明

设置是否使用 SSL 访问 MongoDB。

auth.mongo.ssl_opts.keyfile

Type Default
string -
说明

若使用 SSL 访问 MongoDB,设置 SSL 客户端的私钥文件。

auth.mongo.ssl_opts.certfile

Type Default
string -
说明

若使用 SSL 访问 MongoDB,设置 SSL 客户端的证书文件。

auth.mongo.ssl_opts.cacertfile

Type Default
string -
说明

若使用 SSL 访问 MongoDB,设置 SSL 的 CA 证书文件。

auth.mongo.w_mode

Type Optional Value Default
enum unsafe, safe, undef undef
说明

设置 MongoDB 的写入模式。

auth.mongo.r_mode

Type Optional Value Default
enum master, slave_ok, undef undef
说明

设置 MongoDB 的读取模式。

auth.mongo.auth_query.collection

Type Default
string mqtt_user
说明

认证过程用的 Collection 名字。

auth.mongo.auth_query.password_field

Type Default
string password
说明

认证过程用的主要字段。如需在密码之后加 salt,可以配置为:

auth.mongo.auth_query.password_field = password,salt

auth.mongo.auth_query.password_hash

Type Optional Value Default
enum plain, md5, sha, sha256, bcrypt sha256
说明

设置密码字段用的哈希算法。如需在 sha256 密码之后加 salt,可以设置为:

auth.mongo.auth_query.password_hash = sha256,salt

如需在 sha256 密码之前加 salt,可以设置为:

auth.mongo.auth_query.password_hash = salt,sha256

如需在 bcrypt 密码之前加 salt,可以设置为:

auth.mongo.auth_query.password_hash = salt,bcrypt

auth.mongo.auth_query.selector

Type Default
string username=%u
说明

认证过程执行的 MongoDB 语句。命令可支持通配符:

  • %u: username
  • %c: clientid
  • %C: 客户端 TLS 证书里的 Common Name
  • %d: 客户端 TLS 证书里的 Subject

auth.mongo.auth_query.super_query

Type Optional Value Default
enum on, off on
说明

认证中是否使用 SuperUser。

auth.mongo.super_query.collection

Type Default
string mqtt_user
说明

若使用 SuperUser,指定 SuperUser 的 MongoDB Collection。

auth.mongo.super_query.selector

Type Default
string username=%u, clientid=%c
说明

若使用 SuperUser,指定查询 SuperUser 使用的 MongoDB 语句。

auth.mongo.acl_query

Type Optional Value Default
enum on, off on
说明

是否开启 ACL 功能。

auth.mongo.acl_query.collection

Type Default
string mqtt_acl
说明

若使用 ACL 功能,指定查询 ACL 规则的 MongoDB Collection。

auth.mongo.acl_query.selector

Type Default
string username=%u
说明

若使用 ACL 功能,指定查询 ACL 规则使用的 MongoDB 语句。可支持多个 ACL 语句,多个语句之间使用 or 连接。

例如,配置如下两条访问规则:

auth.mongo.acl_query.selector.1 = username=%u
auth.mongo.acl_query.selector.2 = username=$all

并且客户端的 username=’ilyas’,则在查询 acl 规则的时候,会执行如下 MongoDB 语句:

db.mqtt_acl.find({$or: [{username: "ilyas"},  {username: "$all"}]});

auth.mongo.topology.pool_size

Type Default
integer 1
说明

MongoDB 拓扑参数,设置线程池大小。

auth.mongo.topology.max_overflow

Type Default
integer 0
说明

MongoDB 拓扑参数,当线程池中所有 workers 都处于忙碌状态时,允许创建多少额外的 worker 线程。

auth.mongo.topology.overflow_ttl

Type Default
integer 1000
说明

MongoDB 拓扑参数,当有 worker 空闲时。多久之后释放额外的 worker 线程。单位: 毫秒。

auth.mongo.topology.overflow_check_period

Type Default
integer 1000
说明

MongoDB 拓扑参数,多长时间检查一次有无空闲线程,以释放额外的 worker。

auth.mongo.topology.local_threshold_ms

Type Default
integer 1000
说明

MongoDB 拓扑参数,选择用来处理用户请求的 Secondary 节点的策略。记到所有节点的 RTT 中的最小值为 LowestRTT,那么只有那些 RTT < LowestRTT + local_threshold_ms 的 Secondary 节点会被选择。

auth.mongo.topology.connect_timeout_ms

Type Default
integer 20000
说明

MongoDB 拓扑参数,MongoDB 连接超时时间,单位: 毫秒。

auth.mongo.topology.socket_timeout_ms

Type Default
integer 100
说明

MongoDB 拓扑参数,MongoDB 消息发送超时时间,单位: 毫秒。

auth.mongo.topology.server_selection_timeout_ms

Type Default
integer 30000
说明

MongoDB 拓扑参数,选择 MongoDB Server 的超时时间,单位: 毫秒。

auth.mongo.topology.wait_queue_timeout_ms

Type Default
integer 1000
说明

MongoDB 拓扑参数,从线程池中选取 worker 的等待超时时间,单位: 毫秒。

auth.mongo.topology.heartbeat_frequency_ms

Type Default
integer 10000
说明

MongoDB 拓扑参数,拓扑扫描之间的间隔时间,单位: 毫秒。

auth.mongo.topology.min_heartbeat_frequency_ms

Type Default
integer 1000
说明

MongoDB 拓扑参数,heartbeat_frequency_ms 允许的最小值,单位: 毫秒。