第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 本章小结

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

相关推荐
Mr YiRan2 小时前
网络请求API监控与网络切换埋点
android·网络
小和尚同志2 小时前
小黑插图 Skill:从 11.7k star 的 Codex 专属,到 Claude Code 能用的平替
人工智能·aigc
高洁012 小时前
孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·transformer·知识图谱·tornado
外域速览3 小时前
智谱50亿美元押注AI自训练
大数据·人工智能
人工智能培训3 小时前
孪生不止在工厂:能源、医疗与农业
大数据·人工智能
米小虾3 小时前
让模型说"我不知道",比让它答对更难:放弃文本生成能换来什么
人工智能
新新学长搞科研3 小时前
【SPIE出版】2026年人工智能、新材料与新能源国际学术会议(AINMNE 2026)
人工智能·新能源·新材料
野生技术架构师3 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
米小虾4 小时前
不写出来的思考:把 Transformer 的层循环起来,是第三条 scaling 轴还是省错了地方?
人工智能
A.说学逗唱的Coke4 小时前
【大模型专题】别再用 HTTP 直连 Agent 了:用 Kafka 承载 A2A 协议,从 PoC 走到生产
人工智能·kafka·a2a