你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

进行 Microsoft Entra ID JWT 身份验证和 Azure RBAC 授权,以发布或订阅 MQTT 消息

可以使用 Microsoft Entra JWT 对 MQTT 客户端进行身份验证,以连接到 Azure 事件网格命名空间。 可以使用 Azure 基于角色的访问控制 (Azure RBAC),使具有 Microsoft Entra 标识的 MQTT 客户端能够发布或订阅对特定主题空间的访问权限。

重要

  • 仅在使用 MQTT v5 协议版本时才支持此功能
  • 仅托管标识和服务主体支持 JWT 身份验证

先决条件

使用 Microsoft Entra JWT 进行身份验证

可以使用 MQTT v5 CONNECT 数据包来提供 Microsoft Entra JWT 令牌以验证客户端,也可以使用 MQTT v5 AUTH 数据包来刷新令牌。

在 CONNECT 数据包中,可以在以下字段中提供所需值:

字段
身份验证方法 OAUTH2-JWT
身份验证数据 JWT 令牌

在 AUTH 数据包中,可以在以下字段中提供所需值:

字段
身份验证方法 OAUTH2-JWT
身份验证数据 JWT 令牌
身份验证原因代码 25

值为 25 的身份验证原因代码表示重新进行身份验证。

注意

  • 受众:“aud”声明必须设置为“https://eventgrid.azure.net/";。

授予访问权限的授权

使用基于 Microsoft Entra ID 的 JWT 身份验证的客户端需要获得与 Azure 事件网格命名空间通信的授权。 可以分配以下两个内置角色,以便向具有 Microsoft Entra 标识的客户端提供发布或订阅权限。

  • 使用“EventGrid TopicSpaces 发布者”角色提供 MQTT 消息发布者访问权限
  • 使用“EventGrid TopicSpaces 订阅者”角色提供 MQTT 消息订阅者访问权限

可以使用这些角色在订阅、资源组、事件网格命名空间或事件网格主题空间范围内提供权限。

将发布者角色分配到主题空间范围内的 Microsoft Entra 标识

  1. 在 Azure 门户中,导航到的事件网格命名空间
  2. 导航到要授权访问的主题空间。
  3. 转到该主题空间的访问控制 (IAM) 页面
  4. 选择“角色分配”选项卡以查看此范围内的角色分配。
  5. 选择“+添加”和“添加角色分配”。
  6. 在“角色”选项卡上,选择“事件网格主题空间发布者”角色。
  7. 在“成员”选项卡上,对于“将访问权限分配给”,选择“用户”、“组”或“服务主体”选项,将所选角色分配给一个或多个服务主体(应用程序)
  8. 选择“+ 选择成员”。
  9. 查找并选择服务主体。
  10. 选择下一个
  11. 在“审阅 + 分配”选项卡上选择“审阅 + 指定”。

注意

可以按照类似的步骤在主题空间范围内分配内置的“EventGrid TopicSpaces 订阅者”角色。

后续步骤