如何从Azure DevOps私有feed中还原NuGet包?

3

背景

我在Azure DevOps上有一些NuGet包,存储在私有的NuGet存储库中,我想要从本地的TFS中使用这些包。

这个方法有效,但只持续了几个小时

在Azure DevOps中,我导航到Artifacts->连接到存储库,并单击"下载NuGet +凭据提供程序"链接。运行CredentialProvider.VSS.exe -U URL_TO_FEED后,我得到一个jwt令牌。

在本地的TFS中,我导航到生成定义中的"NuGet还原"步骤。在"Feeds and authentication"下,我选择"在我的NuGet.config文件中的存储库",然后在"Credentials for feeds outside this account/collection"下点击"Manage"。在"添加新的Team Foundation Server/Team Services连接"对话框中,我选择"基于令牌的身份验证"并填写相应值。我将从CredentialProvider.VSS.exe获得的令牌放入"个人访问令牌"字段中。

NuGet包被还原,所以一切似乎都很好,但第二天它就不能工作了,因为令牌只有效几个小时(我解码它进行验证)。

问题

我该怎么做才能使其正常工作呢?使用"个人访问令牌"似乎很奇怪,因为它不应与我作为个人有关(例如,如果我离开组织)。通过CredentialProvider.VSS.exe生成的令牌的用户名为VssSessionToken,这可能表明它不是与我相关的个人令牌,但我不确定。


你可以尝试使用Azure Artifacts凭据提供程序(https://github.com/Microsoft/artifacts-credprovider),至少它帮助我解决了一个私有源问题(https://github.com/dotnet/cli/issues/9586#issuecomment-561598299)。 - alv
1个回答

5
PAT(个人访问令牌)是Azure Artifacts feeds的首选方式,因为它们是通用的,可以提供对Azure DevOps不同部分的访问权限。
如果您担心它们是个人的,可以使用服务帐户来生成令牌。
如果您想要一个更长寿命的PAT,可能更容易自己创建一个(请参阅https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/nuget-exe?view=azure-devops&tabs=new-nav#add-a-feed-to-nuget-2中的说明)。
简而言之,您将创建一个具有“包装(只读)”权限的PAT,以限制滥用的可能性。
需要注意两件事:
- PAT始终有一个到期日期,因此您需要跟踪它。 - PAT允许访问Azure DevOps Api,作为创建它们的用户,因此请确保它们不可访问,并尽可能限制权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接