个人访问令牌不适用于TFS 2017包源

个人访问令牌不适用于TFS 2017包源,tfs,nuget,Tfs,Nuget,我在虚拟机中设置了TFS 2017,创建了一个项目并添加了包提要扩展。然后我创建了一个feed和一个具有完全访问权限的个人访问令牌 我的问题是,我无法使用nuget.exe3.5.0和个人访问令牌从命令行将包推送到提要。我正在使用提要页面上找到的说明(下面的第二个命令) 我的命令: nuget.exe sources Add -Name MyFeed -Source "http://server2016:8080/tfs/DefaultCollection/_packaging/MyFeed/n

我在虚拟机中设置了TFS 2017,创建了一个项目并添加了包提要扩展。然后我创建了一个feed和一个具有完全访问权限的个人访问令牌

我的问题是,我无法使用
nuget.exe
3.5.0
和个人访问令牌从命令行将包推送到提要。我正在使用提要页面上找到的说明(下面的第二个命令)

我的命令:

nuget.exe sources Add -Name MyFeed -Source "http://server2016:8080/tfs/DefaultCollection/_packaging/MyFeed/nuget/v3/index.json" -Username administrator -Password x7m5hochjcf4vabp3zqeekrzi7mtbyk6at5tujdt2ny5fgienlgq
nuget.exe push -Source "MyFeed" -ApiKey VSTS C:\temp\octopack.3.4.6.nupkg
nuget.exe list -Source MyFeed
我为
推送
列表
获得的输出:

Using credentials from config. UserName: administrator
Please provide credentials for: http://server2016:8080/tfs/DefaultCollection/_packaging/MyFeed/nuget/v3/index.json
UserName:
我尝试再次输入用户名和PAT,但它只是再次提示我

如果我使用我的Windows凭据(与PAT相同的帐户),它可以正常工作。我与Fiddler进行了核对,auth挑战被发送并响应。服务器返回一个401


知道TFS为什么不接受PAT吗?

也许你需要在
nuget.exe sources add
命令中添加
-StorePasswordInClearText
选项。

如果使用
nuget.exe 3.5.0
和个人访问令牌,我可以重现你的问题。但是,如果您在TFS 2017中使用nuget.exe 3.4.3和个人访问令牌,则没有问题

请直接从nuget页面获取
nuget.exe 3.4.3
,而不是使用
nuget.exe 3.5.0


从nuget 5.0开始,您有权设置“ValidAuthenticationTypes”。请参见
nuget源代码-?

 -ValidAuthenticationTypes             Comma-separated list of valid authentication types for this source. By default,
                                       all authentication types are valid. Example: basic,negotiate
这将控制nuget.config中的新密钥

<add key="ValidAuthenticationTypes" value="basic" />

,它允许您在手动指定基本身份验证的PATs/密码时,甚至在配置文件中设置身份验证类型。到目前为止,nuget文档仍在使用。

感谢您的关注。然而,这只是冰山一角。我们实际上使用的是NuGet客户端库,它需要3.5.0来支持SemVer。我刚才在屏幕截图中还注意到,您配置了一个v3提要,但push命令最终使用的是一个v2feed@RobertWagner,我没有设置任何东西,只是下载Nuget,从站点复制并粘贴命令。从测试来看,TFS 2017支持PAT,您可以尝试从Nuget方面寻求帮助,看看他们是否可以帮助您。我说的配置是指添加。
源添加
推送
命令的url为different@RobertWagner我也可以用Nugget3.5复制这个问题。因为您需要使用3.5,所以您需要使用windows帐户(用户名和密码),否则您需要使用3.4.3。这是一种非常不安全的做法。真是万不得已。