使用 Microsoft Entra ID 授权应用程序请求

Azure Web PubSub 支持使用 Microsoft Entra ID 从应用程序授权请求。

本文将介绍如何配置 Web PubSub 资源和代码,以从 Azure 应用程序为 Web PubSub 资源请求授权。

注册应用程序

第一步是注册 Azure 应用程序。

  1. Azure 门户中,搜索并选择“Microsoft Entra ID”
  2. 在左侧菜单的“管理”下,选择“应用注册”
  3. 选择新注册
  4. 对于“名称”,请输入要为应用程序使用的名称。
  5. 选择“注册”以确认应用程序注册。

屏幕截图显示注册应用程序。

注册应用程序后,请转到应用程序概述,查看“应用程序(客户端)ID”和“目录(租户)ID”的值。 你将在以下部分中使用这些值。

显示应用程序的屏幕截图。

有关注册应用程序的详细信息,请参阅快速入门使用 Microsoft 标识平台注册应用程序

添加凭据

可将证书和客户端密码(字符串)作为凭据添加到机密客户端应用注册。

有关添加凭据的详细信息,请参阅“添加凭据”。

添加客户端密码

应用程序要求客户端在请求令牌时提供客户端密码以证明其身份。

若要创建客户端机密,请执行以下操作:

  1. 在左侧菜单中“管理”下,选择“证书和机密”

  2. 在“客户端密码”选项卡上,选择“新建客户端密码”。

    显示创建客户端密码的屏幕截图。

  3. 输入客户端密码的说明,然后选择密码的过期时间。

  4. 复制“客户端密码”的值,然后将其粘贴到安全位置。

    注意

    仅当你创建密码时,密码才可见。 以后无法在门户中查看客户端密码。

添加证书

你可以上传证书,而不是创建客户端密码。

显示上传证书的屏幕截图。

在 Azure 门户中添加角色分配

本部分演示如何将 Web PubSub 服务所有者角色分配给 Web PubSub 资源的服务主体(应用程序)。

注意

可以将角色分配给任何作用域,包括管理组、订阅、资源组和单个资源。 有关范围的详细信息,请参阅了解 Azure 基于角色的访问控制的范围

  1. Azure 门户中转到你的 Web PubSub 资源。

  2. 选择左侧菜单上的“访问控制 (IAM)”,以显示资源的访问控制设置

  3. 选择“角色分配”选项卡并查看此范围内的角色分配

    下图显示了 Web PubSub 资源的“访问控制 (IAM)”窗格示例:

    显示“访问控制 (IAM)”窗格示例的屏幕截图。

  4. 选择“添加”>“添加角色分配”。

  5. 选择“角色”选项卡,然后选择“Web PubSub 服务所有者”

  6. 选择下一步

    显示添加角色分配的屏幕截图。

  7. 选择“成员”选项卡。在“将访问权限分配给”下,选择“用户、组或服务主体”

  8. 选择“选择成员”

  9. 搜索并选择要向其分配角色的应用程序。

  10. 选择“选择”确认选择

  11. 选择下一步

    显示向服务主体分配角色的屏幕截图。

  12. 选择“查看 + 分配”以确认更改

重要

Azure 角色分配可能需要多达 30 分钟时间来进行传播。

若要详细了解如何分配和管理 Azure 角色分配,请参阅以下文章:

使用 Postman 获取 Microsoft Entra 令牌

  1. 打开 Postman。

  2. 对于“方法”,请选择“GET” 。

  3. 对于“URI”,输入 https://login.chinacloudapi.cn/<TENANT ID>/oauth2/token。 将 <TENANT ID> 替换为创建的应用程序的“概述”窗格中的“目录(租户) ID”值

  4. 选择“标头”选项卡,然后添加以下键和值:

    1. 对于“密钥”,请选择“内容类型”。
    2. 输入 application/x-www-form-urlencoded

    显示使用 Postman 获取令牌时“基本”选项卡上的信息的屏幕截图。

  5. 选择“正文”选项卡。

  6. 选择 x-www-form-urlencoded 的正文类型。

  7. 在“密钥”下,添加以下键和值:

    1. 选择 grant_type,然后选择值 client_credentials
    2. 选择 client_id,然后从所创建应用程序的“概述”窗格中粘贴应用程序(客户端)ID 的值。
    3. 选择 client_secret,然后粘贴保存的客户端密码的值。
    4. 选择“资源”,然后输入 https://webpubsub.azure.com 该值。

    显示使用 Postman 获取令牌时“正文”选项卡参数的屏幕截图。

    对于 OAuth2/v2.0/token 终结点,传递 scope 的值,而不是 resource 的值:

    client_id: *your client ID*
    client_secret: *your client secret*
    grant_type: client_credentials
    scope: https://webpubsub.azure.com/.default
    
  8. 选择“发送”以发送获取令牌的请求。 access_token 的值是访问令牌。

    显示使用 Postman 获取令牌时响应令牌的屏幕截图。

使用 Microsoft Entra 授权的代码实例

获取使用 Microsoft Entra 授权的示例(以四种正式支持的编程语言编写):