调用Azure API返回Microsoft.Rest.Azure.CloudException Unauthorized错误排查
401未授权报错排查步骤
- 首先验证服务主体凭证正确性
核对你代码中传入的clientId、clientSecret、TenantId、SubscriptionId四个参数,确认没有多余空格、没有填错参数。你可以直接在本地用Azure CLI执行命令验证凭证有效性:az login --service-principal -u <你的clientId> -p <你的clientSecret> --tenant <你的TenantId>,如果登录失败说明凭证本身有误,可以到Azure AD应用注册页重置客户端密钥后重试。 - 验证订阅权限配置
确认你给服务主体分配的Reader/Contributor等角色是挂载在你代码用到的目标订阅下,而不是其他管理组、资源组层级。可以到Azure门户对应订阅的「访问控制(IAM)」-「角色分配」页面,搜索你的应用名称确认角色确实存在,角色分配后存在最长15分钟的生效延迟,刚分配完成立刻调用接口也可能触发未授权报错。 - 检查Azure AD应用的API权限配置
进入Azure AD应用注册的「API权限」页,确认你已经添加了「Azure 服务管理」的user_impersonation权限,且已经由租户管理员完成了授权同意,缺少这个权限即使订阅角色配置正确也会调用失败。 - 代码层面优化排查
你当前使用的Azure Fluent SDK已经停止维护,存在兼容性风险,有条件可以升级到官方最新的Azure.ResourceManager.ResourceGroupsNuGet包。如果要保留现有代码,确认DSEBackupConstants.SubscriptionId和你分配权限的订阅ID完全一致,同时建议将同步等待resourceGroupTask.Wait()改为异步await调用,避免线程死锁的同时可以捕获更完整的错误栈信息。
内容的提问来源于stack exchange,提问作者SyncMaster
相关产品推荐
相关产品推荐

