你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Microsoft Entra ID 对应用程序进行身份验证和授权,使之能够访问 Azure 服务总线实体
项目
Azure 服务总线支持使用 Microsoft Entra ID 授权对服务总线实体(队列、主题、订阅或筛选器)的请求。 借助 Microsoft Entra ID,可使用 Azure 基于角色的访问控制 (Azure RBAC) 授予对安全主体的访问权限,该安全主体可以是用户、组、应用程序服务主体,或者是 Azure 资源的托管标识。 将 Microsoft Entra ID 与 Azure 服务总线配合使用的主要优势在于,不再需要将凭据存储在代码中。 你可以从 Microsoft 标识平台请求 OAuth 2.0 访问令牌。 如果身份验证成功,则 Microsoft Entra ID 会向应用程序返回访问令牌,然后应用程序可以使用该访问令牌来授权对服务总线资源的请求。
重要
可以为服务总线命名空间禁用本地或 SAS 密钥身份验证,仅允许 Microsoft Entra 身份验证。 有关分步说明,请参阅禁用本地身份验证。
概述
当某个安全主体(用户、组或应用程序)尝试访问服务总线实体时,请求必须获得授权。 如果使用 Microsoft Entra ID,访问资源流程需要两步。
将 Microsoft Entra ID 与 Azure 服务总线配合使用的主要优势之一在于,不再需要在代码中存储凭据。 可以从 Microsoft 标识平台请求 OAuth 2.0 访问令牌。 Microsoft Entra 对在应用程序中运行的安全主体(用户、组、服务主体或 Azure 资源的托管标识)进行身份验证。 如果身份验证成功,Microsoft Entra ID 会将访问令牌返回应用程序,应用程序可随之使用访问令牌对 Azure 服务总线请求授权。
以下部分介绍如何配置本机应用程序或 Web 应用程序,以便在 Microsoft 标识平台 2.0 中进行身份验证。 有关 Microsoft 标识平台 2.0 的详细信息,请参阅 Microsoft 标识平台 (v2.0) 概述。
使用 Microsoft Entra ID 授权访问服务总线实体的第一步是,通过 Azure 门户在 Microsoft Entra 租户中注册客户端应用程序。 注册客户端应用程序时,需要向 AD 提供关于应用程序的信息。 Microsoft Entra ID 随后会提供客户端 ID(也称为应用程序 ID)。在运行时,可以使用该 ID 将应用程序与 Microsoft Entra 关联。 若要了解有关客户端 ID 的详细信息,请参阅 Microsoft Entra ID 中的应用程序对象和服务主体对象。
如果应用程序是一个控制台应用程序,则必须注册一个本机应用程序并将 Microsoft.ServiceBus 的 API 权限添加到“必需的权限”集。 本机应用程序在 Microsoft Entra ID 中还需要有一个充当标识符的 redirect-uri;该 URI 不需要是网络目的地。 对于此示例请使用 https://servicebus.microsoft.com,因为示例代码已使用了该 URI。
TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);