自訂鑒權模式是一種不再依賴阿里雲的AccessKey、SecretKey認證以及RAM授權校正,而是可以由您自訂並上傳身份認證與Topic授權資訊的鑒權方式。這種鑒權模式比較靈活自由,一般適用於自建上雲遷移情境,以便儘可能地與原有許可權校正方式保持一致。
名詞解釋
術語 | 說明 |
應用伺服器 | 您管理本地帳號的伺服器,用來替用戶端申請和管理裝置訪問憑證服務的應用。 |
MQTT伺服器 | 雲Message QueueTT 版許可權認證和訊息收發伺服器,用來處理應用伺服器發起的鑒權相關的請求以及訊息收發業務。 |
使用說明
無論使用何種鑒權模式,本質上可以歸結為身份認證和資源許可權兩個準系統。身份認證,即用戶端的身份標識,由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,雲Message QueueTT 版支援多級Topic,其中一級Topic需要在控制台建立。許可權主要是指Topic的發布和訂閱許可權。在用戶端收發訊息之前,需要對相應的Topic授權(支援MQTT多級Topic或萬用字元),授權的對象可以是Username,或者具體的用戶端(ClientId)。
串連黑名單
自訂鑒權模式提供了串連黑名單功能,您可以設定禁用某個用戶端(ClientId)的串連。
使用流程

具體流程如下:
使用者應用服務端調用相關OpenAPI介面向MQTT伺服器上傳身份資訊(帳號、密碼等)、Topic授權資訊。
使用者應用服務端設定用戶端相關傳參,如Username、Password、ClientId。
用戶端向MQTT伺服器發起請求,通過鑒權後,使用對應的Topic進行訊息收發。
使用限制
執行個體限制:目前僅專業版、鉑金版執行個體支援自訂鑒權模式。
到期設定:雲Message QueueTT 版對於身份認證、資源授權以及串連黑名單等資料暫不提供到期設定功能,您可以及時刪除相關介面進行管理。
容量限制:無論是身份認證,還是資源許可權都佔用了執行個體的中繼資料存放區,所以您需要自行管理鑒權資料,及時刪除不用的許可權資料。目前身份認證、資源授權串連數均不能超過執行個體的串連數規格限制,且串連黑名單也是一種許可權資料,其數量包括在資源許可權裡面,二者之和不能超過執行個體的串連數規格限制。串連數規格限制詳情,請參見使用限制。
Group降級
雲Message QueueTT 版定義了Group,用於指定一組邏輯功能完全一致的節點共用的組名,代表一類相同功能的裝置,ClientId由兩部分組成,形式為<GroupID>@@@<DeviceID>。然而由於該格式的限制,導致已有自訂裝置ID很難遷移過來。為此,我們也支援降級Group的功能,即ClientId可以任意填寫,在Group降級時,一些控制台功能比如裝置查詢、裝置軌跡查詢暫且也被降級不能使用。如需使用,請提交工單進行申請。
相關API
自訂鑒權模式提供了身份認證和資源授權相關的管控API,您可以根據身份認證的相關API來管理身份資訊,可以根據資源授權相關的API來管理Topic的收發許可權。
API | 描述 |
調用AddCustomAuthIdentity添加帳號身份認證資訊。 | |
調用UpdateCustomAuthIdentity更新自訂身份認證資訊。 | |
調用QueryCustomAuthIdentity查詢自訂身份認證資訊。 | |
調用DeleteCustomAuthIdentity刪除自訂身份認證資訊。 | |
調用AddCustomAuthPermission添加Topic資源授權資訊。 | |
調用UpdateCustomAuthPermission更新Topic資源授權資訊。 | |
調用QueryCustomAuthPermission查詢Topic授權資訊。 | |
調用DeleteCustomAuthPermission刪除Topic授權資訊。 | |
調用AddCustomAuthConnectBlack添加串連黑名單,禁用某個裝置串連。 | |
調用DeleteCustomAuthConnectBlack刪除串連黑名單。 | |
調用QueryCustomAuthConnectBlack查詢串連黑名單。 |