第6章 Mosquitto用户认证与访问控制

第6章 用户认证与访问控制

6.1 认证机制概览

匿名
用户名密码
插件
客户端连接
认证检查
allow_anonymous
密码文件
动态认证
允许或拒绝
验证密码
成功/失败
外部验证

6.2 密码文件管理

创建密码文件

bash 复制代码
# 创建新密码文件(-c)
mosquitto_passwd -c /etc/mosquitto/passwd admin

# 添加用户
mosquitto_passwd -b /etc/mosquitto/passwd user1 pass123

# 删除用户
mosquitto_passwd -D /etc/mosquitto/passwd user1

# 修改密码
mosquitto_passwd -b /etc/mosquitto/passwd admin newpass

密码文件格式

bash 复制代码
# /etc/mosquitto/passwd
# 格式: username:$6$hash...
admin:$6$4o...
user1:$6$7k...
user2:$6$9m...

6.3 ACL访问控制

ACL文件结构

ACL规则
用户权限
user specific
topic readwrite
topic read
topic write
模式匹配
pattern readwrite
%u 用户名
%c ClientID
通配符

  • 单级 # 多级

ACL配置示例

bash 复制代码
# /etc/mosquitto/acl

# 管理员 - 所有权限
user admin
topic readwrite #

# 传感器设备
user sensor001
topic write sensor/sensor001/data
topic read sensor/sensor001/config
topic read cmd/sensor001/#

# 移动应用
user app_user123
topic read home/#
topic write home/cmd/#

# 只读监控
user monitor
topic read #

# 模式匹配
pattern readwrite home/%u/#
pattern readwrite device/%c/#

匹配优先级

ACL检查
用户特定规则
模式匹配规则
默认规则
最优先
其次
最后
应用第一个匹配

6.4 认证流程

ACL文件 密码文件 Broker 客户端 ACL文件 密码文件 Broker 客户端 CONNECT user/user1, pass/pass123 查询user1 密码匹配 认证成功 SUBSCRIBE sensor/ 检查ACL 允许订阅 SUBACK PUBLISH sensor/data 检查发布权限 允许发布 转发消息

6.5 完整配置

bash 复制代码
# /etc/mosquitto/mosquitto.conf

# 禁用匿名
allow_anonymous false

# 密码文件
password_file /etc/mosquitto/passwd

# ACL文件
acl_file /etc/mosquitto/acl

# 访问日志
log_dest stdout
log_type all
connection_messages true

6.6 本章小结

实现了基于用户名密码的认证和细粒度的主题访问控制。

相关推荐
不悔哥6 小时前
开源 QEMU:不用板子也能跑嵌入式系统
开源
搁浅小泽7 小时前
新能源汽车多合一压缩机控制器CAN网络测试规范
网络·汽车
成旭先生7 小时前
AI 文本审核 API:一段中文文本判风险等级、命中标签与处置建议
java·前端·人工智能·api接口·内容风控·文本审核·ugc审核
草上飞95277 小时前
把前沿能力装进便宜产物,本身是多数模型还不会的能力
人工智能·深度学习·llm
林澈在路上7 小时前
2026生成后可发行的AI音乐工具怎么选
人工智能·版权·ai音乐·音乐发行·melo音乐
LoneEon7 小时前
CentOS7 部署 Nacos3.x 集群实战:从注册中心到 AI 管理中心
linux·人工智能·nacos
RobinDevNotes7 小时前
亲手量化大模型,Mac实测和NVIDIA指南
人工智能·后端
跟我学机器学习7 小时前
Qwen3 Reranking原理与使用:重排模型在 RAG 中的作用
人工智能·深度学习·transformer
袁俪7 小时前
数字孪生驱动大模型
人工智能
江润舟7 小时前
万物|炼器:从零手搓工业级旋转目标检测网络·卷4 —— 模块化重构(一)
人工智能·深度学习