是否存在使用服务主体访问令牌访问 Azure DevOps 项目中的 Nuget feed 的现有接口?

问题描述 投票:0回答:1

我正在尝试使用 C# 中的服务主体身份验证来获取 Azure Artifacts(通过 Azure DevOps 中的 Nuget feed),但无法找到一个好的方法。有谁知道是否有对此的现有支持?

我找到的壁橱文档是此链接:https://learn.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/service-principal-management-identity?view=azure-devops

在示例代码中,它使用 SP 令牌通过 SP 访问令牌访问 DevOps 组件,例如工作项和管道。但是,我找不到 Nuget feeds 这样的工件的等效组件:

var vssAadToken = new VssAadToken("Bearer", accessToken.Token);
var vssAadCredentials = new VssAadCredential(vssAadToken);
var orgUrl = new Uri(new Uri(AdoBaseUrl), AdoOrgName);
var connection = new VssConnection(orgUrl, vssAadCredentials);
var client = connection.GetClient<**WorkItemTrackingHttpClient**>();

我发现的另一种方法是使用 Nuget 库,但似乎它只支持用户名和密码身份验证,在我的情况下我想使用访问令牌:

var repository = Repository.CreateSource(Repository.Provider.GetCoreV3(), "FeedUrl");
repository.PackageSource.Credentials = new        NuGet.Configuration.PackageSourceCredential("FeedUrl", **userName**, **password**, true, "basic");
return await repository.GetResourceAsync<FindPackageByIdResource>();
azure-devops nuget
1个回答
0
投票

您可以使用服务主体通过 OAuth 2.0 客户端凭据流向 Azure DevOps 进行身份验证。有一个示例项目供您参考,其中演示了如何使用适用于 .NET 的 Azure Identity 客户端库获取服务主体的 Azure AD 访问令牌,并向 Azure DevOps 进行身份验证以创建或获取工作项。同样的方法可以访问 Azure DevOps 中的其他资源,而不仅仅是工作项。

要使用服务主体下载工件,有一些注意事项:

  1. 您需要在 Azure DevOps 组织中添加服务主体。我们只能为您的组织连接到的租户添加服务主体。
  2. 为您的目标 Feed 至少分配 Feed Reader 权限
  3. 使用 Microsoft.TeamFoundation.Build.WebApi.ArtifactResource 类访问工件。
© www.soinside.com 2019 - 2024. All rights reserved.