Microsoft Entra JWT 驗證和 Azure RBAC 授權以發佈或訂閱 MQTT 訊息
您可以使用 Microsoft Entra JWT 對 MQTT 用戶端進行驗證,以連線到事件方格命名空間。 您可以使用 Azure 角色型存取控制 (Azure RBAC) 來讓具有 Microsoft Entra 身分識別的 MQTT 用戶端可以發佈或訂閱對特定主題空間的存取。
重要
- 只有在使用 MQTT v5 通訊協定版本時才支援此功能
- 只針對受控識別和服務主體支援 JWT 驗證
必要條件
- 您需要已啟用 MQTT 的事件方格命名空間。 了解建立事件方格命名空間
使用 Microsoft Entra JWT 進行驗證
您可以使用 MQTT v5 CONNECT 封包來提供 Microsoft Entra JWT 權杖以對您的用戶端進行驗證,並且可以使用 MQTT v5 AUTH 封包來重新整理該權杖。
在 CONNECT 封包中,您可以在下列欄位中提供必要的值:
欄位 | 值 |
---|---|
驗證方法 | OAUTH2-JWT |
驗證資料 | JWT 權杖 |
在 AUTH 封包中,您可以在下列欄位中提供必要的值:
欄位 | 值 |
---|---|
驗證方法 | OAUTH2-JWT |
驗證資料 | JWT 權杖 |
驗證原因碼 | 25 |
值為 25 的驗證原因碼表示重新驗證。
注意
- Audience: “aud” claim 必須設定為 "https://eventgrid.azure.net/"。
授與存取權限的授權
使用 Microsoft Entra ID 型 JWT 驗證的用戶端必須獲得授權,才能與事件方格命名空間通訊。 您可以指派下列兩個內建角色,以向具有 Microsoft Entra 身分識別的用戶端提供發佈或訂閱權限。
- 使用 EventGrid TopicSpaces 發佈者角色來提供 MQTT 訊息發佈者存取權
- 使用 EventGrid TopicSpaces 訂閱者角色來提供 MQTT 訊息訂閱者存取權
您可以使用這些角色來提供訂閱、資源群組、事件方格命名空間或事件方格主題空間範圍的權限。
將發佈者角色指派給 topicspace 範圍中的 Microsoft Entra 身分識別
- 在 Azure 入口網站中,瀏覽到您的事件方格命名空間
- 瀏覽至您要將存取權授權給它的 topicspace。
- 移至該 topicspace 的存取控制 (IAM) 頁面
- 選取 [角色指派] 索引標籤,以檢視此範圍中的角色指派。
- 選取 [+ 新增] 和 [新增角色指派]。
- 在 [角色] 索引標籤上,選取 [事件方格 TopicSpaces 發佈者] 角色。
- 在 [成員] 索引標籤上,針對 [將存取權指派給] 選取 [使用者、群組或服務主體] 選項,以將選取的角色指派給一個或多個服務主體 (應用程式)。
- 選取 + 選取成員。
- 尋找並選取服務主體。
- 選取下一個
- 在 [檢閱 + 指派] 索引標籤上選取 [檢閱 + 指派]。
注意
您可以遵循類似的步驟,在 topicspace 範圍內指派內建的 EventGrid TopicSpaces 訂閱者角色。
下一步
- 請參閱使用事件方格來發佈和訂閱 MQTT 訊息
- 若要深入了解受控識別的運作方式,請參閱 Azure 資源的受控識別如何與 Azure 虛擬機器搭配運作 - Microsoft Entra
- 若要深入了解如何從 Microsoft Entra ID 取得權杖,您可以參閱取得 Microsoft Entra 權杖
- 若要深入了解 Azure 身分識別用戶端程式庫,您可以參閱使用 Azure 身分識別用戶端程式庫
- 若要深入了解實作可提供權杖的憑證的介面,您可以參閱 TokenCredential 介面
- 若要深入了解如何使用 Azure 身分識別來進行驗證,您可以參閱範例
- 如果您偏好使用自訂角色,您可以檢閱建立自訂角色的程序