vso.tokenadministration
和
vso.tokens
我使用MSAL库在我的功能应用中检索授权代码。它正常工作,并且正在返回有效的auth代码。
const config = {
auth: {
clientId: process.env.AZURE_CLIENT_ID,
authority: "https://login.microsoftonline.com/" + process.env.AZURE_TENANT_ID,
clientSecret: process.env.AZURE_CLIENT_SECRET,
}
};
const cca = new ConfidentialClientApplication(config);
const result = await cca.acquireTokenByClientCredential({
scopes: ["499b84ac-1321-427f-aa17-267ca6975798/.default"],
});
return result.accessToken;
首先,我有以下错误:
Access拒绝:00000000-0000-0000-0000-0000-000000000000需要对资源主体的以下许可执行此操作:公共标识符读取 然后,尝试了一些解决方案后,设法获得以下内容(老实说,不知道哪个用户是指)用户'92EC58A6-8A14-6563-A4B4-D1D0E40F40FF'无权访问此资源。
我尝试过的事物:
API权限乱七八糟,但找不到合适的权限。 tried将我的应用程序添加到Azure DevOps组中,但遇到了另一个错误,说服务器校长不允许进入此操作。
无论如何都会使用PAT进行努力(当然,它不起作用)tried使用ROPC流量来检索令牌以获得访问令牌和非交互式用户,使用委派的权限,但我们启用了多因素,因此它也无法正常工作。
我真的不知道该怎么办。有人有任何帮助吗?注意,服务主要身份验证是不支持与Azure Devops Pats API合作的。您只能使用涉及用户互动以使其正常工作的
deled
流。您的用例是避免用户交互,唯一的方法是使用ROPC流。但是,如果为用户启用了MFA,则不能使用要解决此问题,请确保使用用户使用用户名密码(ROPC)Flow生成访问令牌的MFA。ROPCflow
生成访问令牌。
在本质上,我注册了一个申请,并在
API权限下方添加了这样的同意:Fetchpats.js:
require("dotenv").config();
const axios = require("axios");
const getAccessToken = require("./auth");
async function fetchPats() {
try {
const accessToken = await getAccessToken();
if (!accessToken) throw new Error("Failed to acquire access token");
const url = "https://vssps.dev.azure.com/sridevOps22/_apis/tokens/pats?api-version=7.1-preview.1";
const response = await axios.get(url, {
headers: {
"Authorization": `Bearer ${accessToken}`,
"Content-Type": "application/json",
}
});
console.log("\nPAT Tokens Response:", JSON.stringify(response.data, null, 2));
} catch (error) {
console.error("Error fetching PAT tokens:", error.response?.data || error.message);
}
}
fetchPats();