文档

自定义鉴权模式

更新时间:
一键部署

自定义鉴权模式是一种不再依赖阿里云的AccessKey、SecretKey认证以及RAM授权校验,而是可以由您自定义并上传身份认证与Topic授权信息的鉴权方式。这种鉴权模式比较灵活自由,一般适用于自建上云迁移场景,以便尽可能地与原有权限校验方式保持一致。

名词解释

术语

说明

应用服务器

您管理本地账号的服务器,用来替客户端申请和管理设备访问凭证服务的应用。

MQTT服务器

云消息队列 MQTT 版权限认证和消息收发服务器,用来处理应用服务器发起的鉴权相关的请求以及消息收发业务。

使用说明

无论使用何种鉴权模式,本质上可以归结为身份认证和资源权限两个基本功能。身份认证,即客户端的身份标识,由Username/Password传参以及ClientId来识别,然后进行服务端校验。资源权限,主要是Topic的发布订阅权限,由您提前把授权信息上传到服务端,然后对客户端实际收发的Topic进行收发权限校验。

身份认证

目前服务端提供两种维度的身份标识:

  • 根据Username来标识,无需关注ClientId,多个客户端可以共用。

  • 根据Username + ClientId来标识,表示具体到某个客户端专用,其他客户端不会混用。

Password即密钥或签名,一般不建议直接设置为密钥,而是使用密钥对ClientId进行签名得到Password。具体计算方法如下:

举例:一个客户端的Client ID是GID_Test@@@0001,使用的AccessKey Secret(secretKey)是XXXXX。用XXXXX作为密钥,使用HMAC-SHA1方法对待签名字符串GID_Test@@@0001做签名计算得到一个二进制数组,再对该二进制数组做Base64编码得到最终的Password签名字符串。

不过,考虑到自定义权限的灵活性以及签名算法的多样式,我们也提供了简单设置原始签名的方式,即服务端只比较Password和您提前上传的原始签名。

资源权限

资源主要是指Topic,云消息队列 MQTT 版支持多级Topic,其中一级Topic需要在控制台创建。权限主要是指Topic的发布和订阅权限。在客户端收发消息之前,需要对相应的Topic授权(支持MQTT多级Topic或通配符),授权的对象可以是Username,或者具体的客户端(ClientId)。

连接黑名单

自定义鉴权模式提供了连接黑名单功能,您可以设置禁用某个客户端(ClientId)的连接。

使用流程

图片1.png

具体流程如下:

  1. 用户应用服务端调用相关OpenAPI接口向MQTT服务器上传身份信息(账号、密码等)、Topic授权信息。

  2. 用户应用服务端设置客户端相关传参,如Username、Password、ClientId。

  3. 客户端向MQTT服务器发起请求,通过鉴权后,使用对应的Topic进行消息收发。

使用限制

  • 实例限制:目前仅专业版、铂金版实例支持自定义鉴权模式。

  • 过期设置:云消息队列 MQTT 版对于身份认证、资源授权以及连接黑名单等数据暂不提供过期设置功能,您可以及时删除相关接口进行管理。

  • 容量限制:无论是身份认证,还是资源权限都占用了实例的元数据存储,所以您需要自行管理鉴权数据,及时删除不用的权限数据。目前身份认证、资源授权连接数均不能超过实例的连接数规格限制,且连接黑名单也是一种权限数据,其数量包括在资源权限里面,二者之和不能超过实例的连接数规格限制。连接数规格限制详情,请参见使用限制

Group降级

云消息队列 MQTT 版定义了Group,用于指定一组逻辑功能完全一致的节点共用的组名,代表一类相同功能的设备,ClientId由两部分组成,形式为<GroupID>@@@<DeviceID>。然而由于该格式的限制,导致已有自定义设备ID很难迁移过来。为此,我们也支持降级Group的功能,即ClientId可以任意填写,在Group降级时,一些控制台功能比如设备查询、设备轨迹查询暂且也被降级不能使用。

相关API

自定义鉴权模式提供了身份认证和资源授权相关的管控API,您可以根据身份认证的相关API来管理身份信息,可以根据资源授权相关的API来管理Topic的收发权限。

API

描述

AddCustomAuthIdentity - 添加身份认证

调用AddCustomAuthIdentity添加账号身份认证信息。

UpdateCustomAuthIdentity - 更新身份认证

调用UpdateCustomAuthIdentity更新自定义身份认证信息。

QueryCustomAuthIdentity - 查询身份认证

调用QueryCustomAuthIdentity查询自定义身份认证信息。

DeleteCustomAuthIdentity - 删除身份认证

调用DeleteCustomAuthIdentity删除自定义身份认证信息。

AddCustomAuthPermission - 添加Topic授权

调用AddCustomAuthPermission添加Topic资源授权信息。

UpdateCustomAuthPermission - 更新Topic授权

调用UpdateCustomAuthPermission更新Topic资源授权信息。

QueryCustomAuthPermission - 查询Topic授权

调用QueryCustomAuthPermission查询Topic授权信息。

DeleteCustomAuthPermission - 删除Topic授权

调用DeleteCustomAuthPermission删除Topic授权信息。

AddCustomAuthConnectBlack - 添加连接黑名单

调用AddCustomAuthConnectBlack添加连接黑名单,禁用某个设备连接。

DeleteCustomAuthConnectBlack - 删除连接黑名单

调用DeleteCustomAuthConnectBlack删除连接黑名单。

QueryCustomAuthConnectBlack - 查询连接黑名单

调用QueryCustomAuthConnectBlack查询连接黑名单。

  • 本页导读 (1)
文档反馈