开发者社区> 问答> 正文

接入准备MQTT 签名计算如何实现?


本文档介绍使用 MQTT 收发消息中需要用到的签名的计算方式以及使用控制台工具生成签名的方法。
使用 MQTT 收发消息,服务端需要对客户端的身份进行权限校验,因此客户端请求中都需要带上签名以便比对身份。

MQTT SDK 访问消息服务器


MQTT 客户端实际连接 MQTT 消息服务器时,在 connect 报文中需要上传 username 和 password。其中 username 就是 AccessKey,password 则是将 Group ID 作为待签名字符串,用 SecretKey 作为秘钥计算得到的签名。
比如客户端的 Client ID 是 GID_AAA@@@BBB001。
此时待签名字符串就是取 Client ID 的前缀,即 Group ID,“ GID_AAA”。
然后用 SecretKey 作为秘钥,使用 HmacSHA1 方法对上面的待签名字符串做签名计算得到一个二进制数组,最后对该二进制数组做 Base64 编码得到最终的 password 签名字符串,即 “ eqweq+adwe23fssf”。
Hmac 的算法实现,各个语言都有现成的函数库,请自行搜索。

使用控制台生成签名


为方便用户比对验证自己的签名计算是否正确,LMQ 控制台提供了签名计算工具供参考比对。
输入程序使用的帐号 AccessKey,SecretKey 以及 GroupId,即可得到程序中需要设置的 UserName 和 PassWord 参数。具体参考如下:

[backcolor=transparent]注意:此工具仅仅使用浏览器前端 JavaScript 完成计算,并不会传输 SecretKey 到 MQ 后端,因此不用担心 SecretKey 泄漏的风险。

展开
收起
猫饭先生 2017-10-27 10:37:43 3129 0
1 条回答
写回答
取消 提交回答
  • 您好! SecretKey是哪里来的?

    2021-01-04 10:50:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RocketMQ Client-GO 介绍 立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载