You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地.NET Core控制台应用Azure AD认证Azure Service Bus的权限配置疑问

改用Azure AD认证Azure Service Bus的配置步骤

一、为Azure AD应用注册添加Service Bus API权限

  • 登录Azure门户,找到你已注册的AD应用,进入API权限页面。
  • 点击「添加权限」,切换到「我的组织使用的API」标签,搜索并选中Microsoft.ServiceBus(部分场景下显示为「Azure Service Bus」)。
  • 选择应用权限(控制台应用属于服务端身份,无需用户交互,因此使用应用权限而非委派权限),根据业务需求勾选对应权限:
    • Azure Service Bus Data Sender:仅发送消息权限
    • Azure Service Bus Data Receiver:仅接收消息权限
    • Azure Service Bus Data Owner:完全管理权限
  • 点击「添加权限」后,需由拥有全局管理员或特权角色的账号点击「授予管理员同意」,确保权限生效。

二、为AD应用分配Service Bus RBAC角色

  • 进入你的Azure Service Bus命名空间页面,打开**访问控制(IAM)**选项卡。
  • 点击「添加」→「添加角色分配」。
  • 在角色列表中选择对应的Service Bus数据角色(与第一步选的权限对应即可),比如「Azure Service Bus Data Sender」。
  • 在「分配访问权限至」中选择「Azure AD用户、组或服务主体」,搜索并选中你注册的AD应用名称。
  • 点击「保存」,等待5-10分钟让权限同步生效。

三、.NET Core控制台应用代码修改示例

使用新SDK Azure.Messaging.ServiceBus(推荐)

using Azure.Identity;
using Azure.Messaging.ServiceBus;

// 替换为你的实际配置
var tenantId = "你的Azure AD租户ID";
var clientId = "你的AD应用客户端ID";
var clientSecret = "你的AD应用客户端密钥";
var serviceBusNamespace = "你的Service Bus命名空间.servicebus.windows.net";

// 使用ClientSecretCredential获取AD令牌
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var serviceBusClient = new ServiceBusClient(serviceBusNamespace, credential);

// 后续发送/接收消息逻辑与SAS方式一致,示例:
var sender = serviceBusClient.CreateSender("你的队列名");
await sender.SendMessageAsync(new ServiceBusMessage("测试消息"));

使用旧SDK Microsoft.Azure.ServiceBus

using Microsoft.Azure.ServiceBus;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.Threading.Tasks;

var namespaceName = "你的Service Bus命名空间";
var clientId = "你的AD应用客户端ID";
var clientSecret = "你的AD应用客户端密钥";
var tenantId = "你的Azure AD租户ID";

// 自定义令牌提供器
var tokenProvider = new AzureServiceBusTokenProvider(async (audience, authority, state) =>
{
    var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}/");
    var clientCredential = new ClientCredential(clientId, clientSecret);
    var authResult = await authContext.AcquireTokenAsync(audience, clientCredential);
    return authResult.AccessToken;
}, "https://servicebus.azure.net/", $"https://login.microsoftonline.com/{tenantId}/");

// 创建队列客户端
var queueClient = new QueueClient($"sb://{namespaceName}.servicebus.windows.net/你的队列名", tokenProvider);

内容的提问来源于stack exchange,提问作者OpenStack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:05:33