你当前正在访问 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 身份验证
先决条件
- 需要一个启用了 MQTT 的事件网格命名空间。 了解创建事件网格命名空间
使用 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 标识
- 在 Azure 门户中,导航到的事件网格命名空间
- 导航到要授权访问的主题空间。
- 转到该主题空间的访问控制 (IAM) 页面
- 选择“角色分配”选项卡以查看此范围内的角色分配。
- 选择“+添加”和“添加角色分配”。
- 在“角色”选项卡上,选择“事件网格主题空间发布者”角色。
- 在“成员”选项卡上,对于“将访问权限分配给”,选择“用户”、“组”或“服务主体”选项,将所选角色分配给一个或多个服务主体(应用程序)。
- 选择“+ 选择成员”。
- 查找并选择服务主体。
- 选择下一个
- 在“审阅 + 分配”选项卡上选择“审阅 + 指定”。
注意
可以按照类似的步骤在主题空间范围内分配内置的“EventGrid TopicSpaces 订阅者”角色。
后续步骤
- 请参阅使用事件网格发布和订阅 MQTT 消息
- 要了解有关托管标识如何工作的更多信息,可以参考 Azure 资源的托管身份如何与 Azure 虚拟机一起工作 - Microsoft Entra
- 要了解有关如何从 Microsoft Entra ID 获取令牌的详细信息,请参阅获取 Microsoft Entra 令牌
- 要了解有关 Azure 标识客户端库的更多信息,可以参考使用 Azure 标识客户端库
- 要了解有关实现可提供令牌的凭据接口的更多信息,可以参考 TokenCredential 接口
- 要了解有关如何使用 Azure 标识进行身份验证的更多信息,可以参考示例
- 如果希望使用自定义角色,可以查看创建自定义角色的过程