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

在ASP.NET Core MVC中使用联合凭据生成令牌获取Azure DevOps工作项

在ASP.NET Core MVC中通过联合凭据生成VssOAuthAccessTokenCredential的访问令牌

要实现无需密钥或证书,仅通过联合凭据生成VssOAuthAccessTokenCredential可用的访问令牌,可借助DefaultAzureCredential自动获取符合要求的令牌,具体实现如下:

必要依赖

首先安装两个NuGet包:

  • Azure.Identity:提供DefaultAzureCredential实现
  • Microsoft.VisualStudio.Services.Client:提供VssOAuthAccessTokenCredential及Azure DevOps API客户端

完整示例代码

在ASP.NET Core MVC控制器中,可按以下方式实现:

using Azure.Identity;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.VisualStudio.Services.OAuth;
using Microsoft.VisualStudio.Services.WebApi;

public class AzureDevOpsController : Controller
{
    public async Task<IActionResult> Index()
    {
        // 初始化DefaultAzureCredential,自动适配多种联合凭据场景
        // 本地开发用Azure CLI登录凭据,Azure部署环境用托管标识
        var azureCredential = new DefaultAzureCredential();

        // 请求Azure DevOps的访问令牌,固定作用域为https://dev.azure.com/.default
        var tokenContext = new TokenRequestContext(new[] { "https://dev.azure.com/.default" });
        var tokenResult = await azureCredential.GetTokenAsync(tokenContext);

        // 用获取到的令牌创建VssOAuthAccessTokenCredential
        var vssCredential = new VssOAuthAccessTokenCredential(tokenResult.Token);

        // 示例:创建Azure DevOps连接并调用API
        var orgUrl = new Uri("https://dev.azure.com/你的组织名");
        using var connection = new VssConnection(orgUrl, vssCredential);
        
        // 获取项目列表示例
        var projectClient = await connection.GetClientAsync<ProjectHttpClient>();
        var projects = await projectClient.GetProjects();

        return View(projects);
    }
}

关键说明

  • 联合凭据适配逻辑:DefaultAzureCredential会按顺序尝试多种凭据来源,包括本地Azure CLI会话、Azure托管标识、Visual Studio登录凭据等,全程无需手动配置密钥或证书
  • 权限配置:
    • 本地开发时,确保已通过az login登录有权限访问目标Azure DevOps组织的账号
    • 部署到Azure时,需给应用服务/虚拟机等资源配置托管标识,并在Azure DevOps组织中给该标识分配对应权限(如项目贡献者)
  • 令牌作用域:必须使用https://dev.azure.com/.default作为作用域,这是Azure DevOps接受的OAuth2资源标识符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:07:04