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

如何在Node.js版Azure Function中通过MSAL获取Azure DevOps PAT列表

问题根因

你看到的「Internet Explorer增强安全配置」报错是Azure DevOps身份校验失败时返回的HTML错误页的默认提示,和你运行环境的IE配置无关,本质是请求未携带有效授权信息或请求参数错误,具体问题出在以下几点:

  • 配置变量引用错误:代码中clientId、clientSecret、tenantId的赋值额外加了单引号,变成了固定字符串config.DEFAULT_CLIENT_ID,没有实际读取配置文件中的有效值,最终获取的访问令牌没有对应有效权限。
  • 请求URL占位符未替换:接口地址中的{organization}是官方文档的占位符,你没有替换为实际的Azure DevOps组织名称,导致请求目标地址无效。
  • 无效请求参数冗余:request-promise是Node.js服务端请求库,不支持mode、cache这类浏览器fetchAPI的参数,冗余参数可能导致请求格式异常。
  • 权限配置缺失:使用客户端凭证流查询全组织PAT需要提前完成两个权限配置:
    1. AAD应用注册中为应用授予Azure DevOps的应用级权限,并完成租户管理员同意
    2. Azure DevOps组织设置中,将该AAD服务主体添加到Project Collection Administrators用户组

修复后的代码示例

'use strict';

const config = require('../config');
const rp = require('request-promise');
const msal = require('@azure/msal-node');

module.exports = async function (context, req) {
    // 去掉引号,读取实际配置值
    const clientId = config.DEFAULT_CLIENT_ID;
    const clientSecret = config.DEFAULT_CLIENT_SECRET;
    const tenantId = config.DEFAULT_TENANT_ID;
    // 替换为实际的DevOps组织名
    const orgName = config.DEVOPS_ORG_NAME;
 
    const authorityUrl = `https://login.windows.net/${tenantId}`;

    const configuration = {
        auth: {
            clientId: clientId,
            authority: authorityUrl,
            clientSecret: clientSecret
        }
    };

    const cca = new msal.ConfidentialClientApplication(configuration);
    const clientCredentialRequest = {
        scopes: ["499b84ac-1321-427f-aa17-267ca6975798/.default"],
    };

    const credentials = await cca.acquireTokenByClientCredential(clientCredentialRequest);
    const apiToken = `${credentials.tokenType} ${credentials.accessToken}`;

    const url = `https://vssps.dev.azure.com/${orgName}/_apis/tokens/pats?api-version=6.1-preview.1`;
    const headers = {
        Authorization: apiToken
    };

    const result = await rp({
        url: url,
        json: true,
        headers: headers,
        method: 'GET'
    });

    context.res = {
        body: result
    };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:05