对使用 Azure Active Directory 访问事件中心资源的应用程序进行身份验证

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

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

注意

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

Azure 事件中心的内置角色

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

重要

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

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

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

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

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

将应用程序注册到 Azure AD 租户

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

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

注意

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

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

显示应用注册页的屏幕截图,其中突出显示了应用程序 ID。

创建客户端机密

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

使用 Azure 门户分配 Azure 角色

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

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

用于获取令牌的客户端库

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

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

示例

后续步骤

请参阅以下相关文章: