使用 Microsoft Entra ID 对应用程序进行身份验证以访问事件中心资源

Azure 基于 Microsoft Entra ID 针对资源和应用程序提供集成的访问控制管理。 将 Microsoft Entra ID 与 Azure 事件中心配合使用的主要优势在于,不再需要将凭据存储在代码中。 你可以从 Microsoft 标识平台请求 OAuth 2.0 访问令牌。 请求令牌的资源名称为 https://eventhubs.chinacloudapi.cn/,所有云/租户都是如此(对于 Kafka 客户端,请求令牌的资源为 https://<namespace>.servicebus.chinacloudapi.cn)。 Microsoft Entra 对运行应用程序的安全主体(用户、组或服务主体)进行身份验证。 如果身份验证成功,Microsoft Entra ID 会将访问令牌返回应用程序,应用程序可随之使用访问令牌对 Azure 事件中心资源请求授权。

将角色分配到 Microsoft Entra 安全主体后,Azure 会向该安全主体授予对这些资源的访问权限。 访问权限的范围可限定为订阅、资源组、事件中心命名空间级别或其下的任何资源。 Microsoft Entra 安全主体可向用户、组、应用程序服务主体或 Azure 资源的托管标识分配角色。

注意

角色定义是权限的集合。 Azure 基于角色的访问控制 (Azure RBAC) 控制如何通过角色分配实施这些权限。 角色分配包含三个要素:安全主体、角色订阅和范围。 有关详细信息,请参阅了解不同的角色

Azure 事件中心的内置角色

Azure 提供了以下 Azure 内置角色,用于通过 Microsoft Entra ID 和 OAuth 授予对事件中心数据的访问权限:

重要

预览版支持向“所有者”或“参与者”角色添加事件中心数据访问特权。 但是,不再授予“所有者”和“参与者”角色的数据访问特权。 如果使用“所有者”或“参与者”角色,请改用“Azure 事件中心数据所有者”角色。

通过应用程序进行身份验证

将 Microsoft Entra ID 与 Azure 事件中心配合使用的主要优势之一在于,不再需要在代码中存储凭据。 可以从 Microsoft 标识平台请求 OAuth 2.0 访问令牌。 Microsoft Entra 对运行应用程序的安全主体(用户、组或服务主体)进行身份验证。 如果身份验证成功,Microsoft Entra ID 会将访问令牌返回应用程序,应用程序可随之使用访问令牌对 Azure 事件中心请求授权。

以下部分介绍如何配置本机应用程序或 Web 应用程序,以便在 Microsoft 标识平台 2.0 中进行身份验证。 有关 Microsoft 标识平台 2.0 的详细信息,请参阅 Microsoft 标识平台 (v2.0) 概述

有关 OAuth 2.0 代码授权流的概述,请参阅使用 OAuth 2.0 代码授权流来授权访问 Microsoft Entra Web 应用程序

在 Microsoft Entra 租户中注册应用程序

使用 Microsoft Entra ID 授权访问事件中心资源的第一步是,通过 Azure 门户在 Microsoft Entra 租户中注册客户端应用程序。 按照快速入门:向 Microsoft 标识平台注册应用程序中的步骤,在 Microsoft Entra ID 中注册一个代表尝试访问 Azure 事件中心资源的应用程序。

注册客户端应用程序时,需要向 AD 提供关于应用程序的信息。 Microsoft Entra ID 随后会提供客户端 ID(也称为应用程序 ID)。在运行时,可以使用该 ID 将应用程序与 Microsoft Entra 关联。 若要了解有关客户端 ID 的详细信息,请参阅 Microsoft Entra ID 中的应用程序对象和服务主体对象

注意

如果将应用程序注册为本机应用程序,可以为重定向 URI 指定任何有效的 URI。 对于本机应用程序,此值不一定要是实际的 URL。 对于 Web 应用程序,重定向 URI 必须是有效的 URI,因为它指定了要向哪个 URL 提供令牌。

注册应用程序后,可在“设置”下看到“应用程序(客户端) ID”:

Screenshot showing the app registration page with application ID highlighted.

创建客户端机密

请求令牌时,应用程序需要使用客户端机密来证明其身份。 按照添加客户端密码中的步骤在 Microsoft Entra ID 中为应用创建客户端密码。

使用 Azure 门户分配 Azure 角色

将其中一个事件中心角色分配给所需范围(事件中心命名空间、资源组、订阅)中应用程序的服务主体。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

定义角色及其范围后,可以使用此 GitHub 位置提供的示例测试此行为。 若要详细了解如何使用 Azure RBAC 和 Azure 门户管理对 Azure 资源的访问,请参阅此文

用于获取令牌的客户端库

注册应用程序并向其授予在 Azure 事件中心发送/接收数据的权限后,可将代码添加到应用程序,以便对安全主体进行身份验证并获取 OAuth 2.0 令牌。 若要进行身份验证并获取令牌,可以使用 Microsoft 标识平台身份验证库,或者其他支持 OpenID 或 Connect 1.0 的开源库。 然后,应用程序可以使用访问令牌来授权针对 Azure 事件中心发出的请求。

有关支持获取令牌的方案,请参阅适用于 .NET 的 Microsoft 身份验证库 (MSAL) GitHub 存储库的方案部分。

示例

后续步骤

请参阅以下相关文章: