我在azure devops的私有nuget feed中有nuget包,我尝试从本地TFS中使用它们。
在azure devops中,我导航到Artifacts - > Connect to feed并单击“Download NuGet + Credential Provider”链接。当运行CredentialProvider.VSS.exe -U URL_TO_FEED
时,我得到了一个jwt令牌。
在tfs on-prem中,我导航到构建定义中的“NuGet restore”步骤。在“供稿和身份验证”中,我选择了“我的NuGet.config中的供稿”和“此帐户/集合之外的供稿的凭据”,我点击了“管理”。在“添加新的Team Foundation Server / Team Services连接”对话框中,我选择了“基于令牌的身份验证”并填入了值。我把CredentialProvider.VSS.exe获得的令牌放在“个人访问令牌”字段中。
nuget包已经恢复,所以一切看起来都不错,但第二天它不再工作,因为令牌只有几个小时有效(我解码它来验证)。
我怎么能做这个工作?使用“个人访问令牌”似乎很奇怪,因为它不应该与我作为一个人(例如我离开组织)。 CredentialProvider.VSS.exe生成的令牌的用户名是VssSessionToken,这可能表明它不是与我有关的个人令牌,但我不知道。
PAT(个人访问令牌)几乎是Azure Artifacts源的方式,因为它们是提供对Azure DevOps的不同部分的访问的通用。
如果您担心它们是个人的,那么使用服务帐户生成令牌可能是一种解决方案。
如果你想要一个寿命更长的PAT,你可能更容易自己创建一个(有关说明,请参阅https://docs.microsoft.com/en-us/azure/devops/artifacts/nuget/nuget-exe?view=azure-devops&tabs=new-nav#add-a-feed-to-nuget-2)
简而言之,您将使用“打包(读取)”权限创建PAT,以限制滥用的可能性。
需要考虑的两件事: