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

如何在C#中复现PowerShell az login效果,无需tenantId/clientId获取Azure订阅请求token

解决方案

你当前使用的是客户端凭证流的服务主体认证逻辑,和az login的用户交互式网页登录属于完全不同的认证模式,所以生成的token内容必然存在差异。要实现和网页登录完全一致的逻辑,不需要提前传入tenantId、clientId,建议使用官方最新的Azure.Identity认证库替换已废弃的ADAL库,具体调整步骤如下:

1. 安装依赖

首先安装官方推荐的NuGet包:
Install-Package Azure.Identity

2. 替换认证逻辑

使用InteractiveBrowserCredential即可实现和az login完全一致的弹出网页登录逻辑,无需自行维护clientId、tenantId:

using Azure.Identity;
using Azure.Core;

// 初始化交互式浏览器凭证,默认配置无需传入tenantId、clientId
var credential = new InteractiveBrowserCredential();

// 配置Azure资源管理接口的请求scope
var tokenRequestContext = new TokenRequestContext(new[] { "https://management.azure.com/.default" });

// 自动弹出网页完成登录,获取access token
var accessToken = await credential.GetTokenAsync(tokenRequestContext, CancellationToken.None);
var targetToken = accessToken.Token;

可选:设备码登录适配

如果不需要弹出浏览器,想要实现和az login --use-device-code一致的设备码登录逻辑,替换凭证初始化代码即可:

var credential = new DeviceCodeCredential();

生成的token即可直接用于调用订阅列表等Azure资源管理接口,权限结构和网页登录获取的token完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:10