使用托管标识

本文介绍如何在 Azure Web PubSub 中创建和使用托管标识。

重要

Azure Web PubSub 仅支持一个托管标识。 可以添加系统分配的标识或用户分配的标识。

添加系统分配的标识

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

  1. 在 Azure 门户中,创建 Web PubSub 资源。 转到门户中的资源。

  2. 在左侧菜单中选择“标识”。

  3. 选择“由系统分配”选项卡,然后将“状态”设置为“打开”。 选择“保存”。

    显示在 Azure 门户中添加系统分配标识的屏幕截图。

添加用户分配的标识

若要使用用户分配的标识创建 Web PubSub 资源,请创建标识,然后将标识的资源标识符添加到服务。

  1. 创建用户分配的托管标识资源

  2. 在 Azure 门户中,创建 Web PubSub 资源。 转到门户中的资源。

  3. 在左侧菜单中选择“标识”。

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

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

    显示在 Azure 门户中添加用户分配的标识的屏幕截图。

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

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

为事件处理程序设置托管标识身份验证

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

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

    显示“配置中心设置”窗格中要使用的设置的屏幕截图。

  3. 在“身份验证”下,选择“使用托管标识”,然后选择“指定颁发的令牌访问群体”复选框。 访问群体将成为访问令牌中的 aud 声明。 声明可以是事件处理程序验证的一部分。

    若要进行身份验证,可以选择以下选项之一:

    • 使用现有的 Microsoft Entra 应用程序。 将使用所选应用程序的应用程序 ID。
    • 使用服务主体的“应用程序 ID URI”。

    重要

    使用空资源实际上会获取 Microsoft Graph 的令牌目标。 目前,Microsoft Graph 启用了令牌加密,因此应用程序不支持使用 Microsoft Graph 对令牌进行身份验证。 应始终创建服务主体来表示上游目标。 同时,设置已创建的服务主体的“应用程序 ID”或“应用程序 ID URI”的值

Azure Functions 应用中的身份验证

可以轻松地为 Functions 应用设置访问验证,而无需更改代码。

  1. 在 Azure 门户中,转到 Functions 应用。

  2. 在左侧菜单中选择“身份验证”。

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

  4. 对于“基本信息”选项卡上的“标识提供者”,选择“Microsoft”

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

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

    屏幕截图显示添加标识提供者时所需的基本信息。

  7. 转到 Web PubSub 资源并添加系统分配的标识或用户分配的标识

  8. 在 Web PubSub 资源的左侧菜单中,选择“设置”

  9. 选择“编辑”以编辑中心设置,然后选择“编辑”以编辑事件处理程序设置。 在“身份验证”下,选中“使用托管标识”,然后选择“从现有应用程序选择”复选框。 选择创建的应用程序。

配置这些设置后,Functions 应用会拒绝标头中没有访问令牌的请求。

验证访问令牌

如果不使用 Azure 应用服务或 Azure Functions 的 Web 应用功能,也可以验证令牌。

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

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

Microsoft Entra 中间件具有用于验证访问令牌的内置功能。 可以浏览我们的示例 ,以查找用要使用的语言编写的示例。

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

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

使用托管标识实现密钥保管库引用

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

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

  2. 在密钥保管库中,使用访问策略授予托管标识的机密读取权限。 有关详细信息,请参阅在 Azure 门户中分配密钥保管库访问策略

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

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