使用TFS个人访问令牌克隆Git Repo

时间:2017-08-15 23:04:33

标签: git tfs iis-7.5

我正在尝试以编程方式克隆git存储库。我的ASP.NET MVC应用程序正在创建和启动一个进程。处理进程的代码可以正常工作,但是当尝试使用TFS内部部署PAT来克隆git存储库时,身份验证失败。我无法使用NTLM或要求用户输入凭据。我可以确认我的C#代码处理创建进程以编程方式使用git bash shell,因为我在本地计算机上没有问题但在IIS上生产时出现了问题。我尝试了以下两种方法。

方法1 :git clone http:// anyusername :PAT @ tfs2017:8080 / tfs / DefaultCollection / _git / Git%20Repository

PAT 是我为用户生成的令牌。我也试过在base64中对它进行编码。

方法2 :正如MS社交论坛上的人所建议的那样。

git -c http.extraheader =“AUTHORIZATION:bearer { base64encodedPAT }”clone { url }

原始MS论坛问题供参考: https://social.msdn.microsoft.com/Forums/vstudio/en-US/0107cf1f-7fe4-4429-af74-ca7d2be7405e/using-personal-access-tokens-in-tfs-2017?forum=tfsversioncontrol

4 个答案:

答案 0 :(得分:8)

如果您有PAT,则不需要密码:PAT将作为您的用户名 看看以下是否有效:

git clone http://PAT@tfs2017:8080/tfs/DefaultCollection/_git/Git%20Repository

答案 1 :(得分:3)

您可以通过以编程方式将令牌添加到计算机来使用CredentialManager,这与CredentialManager执行此操作的方式相同。
在Windows上,我使用cmdkey工具,如下所示:

cmdkey /generic:"git:https://yourdomain.visualstudio.com" /user:"Personal Access Token" /pass:"yourtokenhere"

在MacOS上,在钥匙串中添加一个条目:

security add-generic-password -a "Personal Access Token" -D "Credential" -s "gcm4ml:git:https://yourdomain.visualstudio.com" -w "yourtokenhere" -A

注意:避免使用允许任何应用程序访问它的-A。

只要在Git上安装了CredentialManager,它就可以工作。

答案 2 :(得分:3)

从MS阅读文章后,我有些困惑。在尝试了一些方法之后,我终于可以对TFS和VSTS GIT Repos使用我的PAT。

我能够使用PAT克隆GIT存储库的唯一方法是在GIT命令行中设置http.extraheader。授权标签必须指向基本身份验证,协议必须为HTTPS,令牌必须为BASE64编码,包括(虚构的)用户名。

示例: git -c http.extraheader =“授权:基本TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzRh”克隆https://tfs.address/tfs/Collection/Project/_git/RepoName

使用的基本令牌BASE64编码为:TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzRh

基本令牌BASE64解码:MyGitSyncUser:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

令牌是从构建的: 在此示例中: 虚构的用户名:MyGitSyncUser 二手PAT:6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

PAT范围:代码(读取)

TFS / VSTS目前不接受“:授权:承载”标头:(

也许这将帮助在TFS / VSTS中使用PAT的人。

注意:BASIC身份验证需要HTTPS!

答案 3 :(得分:1)

自从我花了几个小时就添加了我的2c。

我从DevOps生成了PAT,并复制了克隆URL,但是我一直得到“找不到存储库”

GIT clone https://<PAT>@dev.azure.com/Organization/My%20Project/_git/MyRepo

请注意,项目中有一个空格,并且已进行URL编码

这在DOS中不起作用-它可以解决

My0Project

您需要像这样对它进行两次转义:

GIT clone https://<PAT>@dev.azure.com/Organization/My%%20Project/_git/MyRepo