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

Azure Web PubSub 服务的托管标识

本文介绍如何为 Azure Web PubSub 服务创建托管标识,以及如何使用此标识。

重要

Azure Web PubSub 服务仅支持一个托管标识。 这意味着,你只能添加系统分配的标识或用户分配的标识。

添加系统分配的标识

要在 Azure 门户中设置托管标识,请先创建一个 Azure Web PubSub 服务实例,然后启用该功能。

  1. 按常规在门户中创建 Azure Web PubSub 服务实例。 在门户中浏览到它。

  2. 选择“标识”。

  3. 在“系统分配”选项卡中,将“状态”切换为“启用” 。 选择“保存”。

    Add a system-assigned identity in the portal

添加用户分配的标识

创建带有用户分配标识的 Azure Web PubSub 服务实例时,需要创建标识,然后将其资源标识符添加到服务中。

  1. 根据这些说明创建用户分配的托管标识资源。

  2. 按常规在门户中创建 Azure Web PubSub 服务实例。 在门户中浏览到它。

  3. 选择“标识”。

  4. 在“用户分配”选项卡上,选择“添加”。

  5. 搜索之前创建的标识并选择它。 选择添加

    Add a user-assigned identity in the portal

在客户端事件方案中使用托管标识

Azure Web PubSub 服务是一种完全托管服务,因此不能使用托管标识手动获取令牌。 当 Azure Web PubSub 服务向事件处理程序发送事件时,将使用托管标识获取访问令牌。 然后,服务将访问令牌设置为 http 请求中的 Authorization 标头。

在事件处理程序设置中启用托管标识身份验证

  1. 添加系统分配的标识或用户分配的标识。

  2. 导航到配置中心设置并添加或编辑事件处理程序上游。

    msi-setting

  3. “身份验证”部分中,选择“使用身份验证”并检查指定颁发的令牌访问群体。 访问群体将成为 aud 获取的访问令牌中的声明,该令牌可用作事件处理程序中的验证的一部分。 你可以选择以下方法之一:

    • 从现有 Microsoft Entra 应用程序中进行选择。 系统将使用你选择的应用程序的 ID。
    • 服务主体的应用程序 ID URI。

    重要

    使用空资源可自动获取 Microsoft Graph 的令牌目标。 与今天一样,Microsoft Graph 支持令牌加密,因此应用程序无法对 Microsoft Graph 以外的令牌进行身份验证。 在常见情况下,应始终创建服务主体来表示上游目标。 并设置 已创建的服务主体的应用程序 ID应用程序 ID URI

函数应用中的身份验证

可以使用 Azure 门户轻松设置函数应用的访问验证,而无需更改代码:

  1. 在 Azure 门户中转到函数应用。

  2. 从菜单中选择“身份验证”。

  3. 选择“添加标识提供者”。

  4. 在“基本信息”选项卡上的“标识提供者”下拉列表中,选择“Microsoft”

  5. 在“请求未经身份验证时需执行的操作”中,选择“使用 Microsoft Entra ID 登录”

  6. 默认会选中用于创建新注册的选项。 可以更改注册的名称。 有关启用 Microsoft Entra 提供程序的详细信息,请参阅《配置应用服务或 Azure Functions 应用以使用 Microsoft Entra ID 登录

    Screenshot that shows basic information for adding an identity provider.

  7. 转到 SignalR 服务并按照步骤添加系统分配的标识或用户分配的标识。

  8. 在 Azure SignalR 服务中,转到“上游设置”,然后选择“使用托管标识”和“从现有应用程序中选择”。 选择之前创建的应用程序。

配置这些设置后,函数应用会拒绝标头中不带访问令牌的请求。

验证访问令牌

如果不使用 WebApp 或 Azure 函数,还可以验证令牌。

Authorization 标头中的令牌是 Microsoft 标识平台访问令牌

若要验证访问令牌,你的应用还应当验证受众和签名令牌。 这些需要根据 OpenID 发现文档中的值进行验证。 有关示例,请参阅文档的独立于租户的版本

Microsoft Entra 中间件具有用于验证访问令牌的内置功能。 你可以浏览我们的示例来查找所选语言的示例。

我们提供了库和代码示例,用以演示如何轻松处理令牌验证。 还有多个可用于 JSON Web 令牌 (JWT) 验证的开源合作伙伴库。 几乎针对每种平台和语言都提供了至少一个选项。 有关 Microsoft Entra 授权库和代码示例的详细信息,请参阅 Microsoft 标识平台身份验证库

具体而言,如果事件处理程序托管在 Azure 函数或 Web 应用中,则可采用配置 Microsoft Entra 登录名这一简单方法。

使用托管标识实现 Key Vault 引用

Web PubSub 服务可以使用托管标识访问密钥保管库,以获取机密。

  1. 为 Azure Web PubSub 服务添加系统分配的标识或用户分配的标识。

  2. 在 Key Vault 的访问策略中授予对托管标识的机密读取权限。 请参阅使用 Azure 门户分配 Key Vault 访问策略

目前,此功能可用于以下方案:

  • 在事件处理程序 URL 模板设置中使用语法 {@Microsoft.KeyVault(SecretUri=<secret-identity>)} 可从密钥保管库获取机密。

后续步骤