You need to enable JavaScript to run this app. 使用托管身份对接Azure Service Bus时报401未授权错误问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用托管身份对接Azure Service Bus时报401未授权错误问题咨询

问题根因

报错InvalidIssuer: Token issuer is invalid的核心原因是凭证获取到的令牌所属租户ID,和你的Azure Service Bus所在的租户ID不匹配。DefaultAzureCredential默认会读取当前账号的默认租户生成令牌,如果你登陆的账号同时加入了多个Azure租户,就会出现颁发者校验不通过的401错误。

解决步骤

1. 确认目标租户ID

进入Azure门户的Service Bus命名空间概览页,找到该资源所属的租户ID,记录该值备用。

2. 给凭证指定租户ID

修改凭证初始化代码,显式传入Service Bus对应的租户ID即可:

var creds = new Azure.Identity.DefaultAzureCredential(new DefaultAzureCredentialOptions
{
    TenantId = "替换为你刚才记录的租户ID"
});

如果单独使用AzureCliCredential也可以用同样的方式指定租户:

var creds = new Azure.Identity.AzureCliCredential(new AzureCliCredentialOptions
{
    TenantId = "替换为你刚才记录的租户ID"
});

3. 确认角色权限分配

要确认你当前登陆的Azure账号,在Service Bus命名空间下被分配了对应数据权限:

  • 发送消息需要Azure Service Bus 数据发送者角色
  • 接收消息需要Azure Service Bus 数据接收者角色
    注意不要只分配所有者、参与者这类管理角色,这类角色默认没有Service Bus的数据读写权限。

可选本地验证

你可以先通过Azure CLI验证令牌获取是否正常:

# 切换到Service Bus所在的订阅
az account set --subscription 你的订阅ID
# 申请Service Bus资源的访问令牌
az account get-access-token --resource https://servicebus.azure.net

如果上述命令可以正常返回令牌,再运行你的代码即可正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 05:54:05