在 libgit2sharp 中使用 TFS PAT 授权
Authorization with TFS PAT in libgit2sharp
我想使用 LibGit2Sharp 访问预置型 TFS 服务器 GIT 存储库。到目前为止,我只是在玩这个库,我无法让它像我期望的那样工作。
我的第一个问题是使用个人访问令牌进行授权。我可以使用提供我公司电子邮件和密码的 UsernamePasswordCredentials 克隆存储库,但是,我找不到使用 PAT 执行此操作的方法。我找不到关于它的任何可靠信息,所以我尝试以不同的组合使用它,比如用它替换我的 password/username,但我无法让它工作 - 我总是得到 LibGit2Sharp.LibGit2SharpException: 'too many redirects or authentication replays'.
这应该意味着凭据无效,但我确定我的令牌有效并且我授权了所有范围,因此它应该能够使用我的凭据做我能做的一切。有没有我可以遵循的示例来启动它 运行?这是我目前使用用户名和密码的解决方案:
var co = new CloneOptions();
co.CredentialsProvider = (_url, _user, _cred) =>
new UsernamePasswordCredentials
{
Username = "username@companyname.com",
Password = "password"
};
Repository.Clone(@"remoteUrl-received-from-api", "destination-folder", co);
我的另一个问题是,URL 从这个 API 端点接收到的哪个:TFS API 是传递给 LibGit2Sharp 的正确的?我正在使用 "remoteUrl"(这是 TFS 网络应用程序 URL)进行克隆,并且在提供用户名和密码时它可以工作,但是,Repository.IsValid returns 错误。我对 TFS 和 GIT 不是很熟悉,所以请原谅我在这方面完全缺乏知识。
如果我明天不能正常工作,我将不得不使用 cmd.exe 进程和控制台命令,我真的很想避免这种情况 - 所以任何帮助都会非常感激。
在 libgit2sharp 中,似乎传递了令牌,因为带有空白密码的用户名特定于 GitHub。这可能不适用于 TFS/VSTS 托管的 git 存储库。
看看 GITHUB 中的这个相关问题:Does Git-Clone support Personal access tokens ?
对于 TFS/VSTS,如果您不想使用 UsernamePasswordCredentials 提供您的公司电子邮件和密码,您可以使用 备用身份验证凭据。
对于 url,您应该使用 TFS git remoterepo url。更多详细示例请参考此 link:
您可以使用备用凭据对 VSTS 进行身份验证。以下代码显示了如何向 VSTS 进行身份验证并执行克隆作业。
using LibGit2Sharp;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string surl = "https://youraccount.visualstudio.com/DefaultCollection/_git/Remoterepo";
string lpath = "C:\LocalPath";
CloneOptions co = new CloneOptions();
string un = "alternativeusername";
string pwd = "alternativepassword";
Credentials ca = new UsernamePasswordCredentials() {Username = un, Password = pwd };
co.CredentialsProvider = (_url, _user, _cred) => ca ;
Repository.Clone(surl,lpath,co);
}
}
}
使用任何用户名和个人访问令牌 作为密码可以在 Azure DevOps (VSTS) 上使用 git。这样您就可以将访问权限限制在最低限度。
假设您的 CloneOptions、FetchOptions、...变量的名称为 "o":
o.CredentialsProvider = (url, fromUrl, types) => new UsernamePasswordCredentials(){Username="Anything", Password = "Your personal access token here" };
我不知道它是否适用于 TFS。
我想使用 LibGit2Sharp 访问预置型 TFS 服务器 GIT 存储库。到目前为止,我只是在玩这个库,我无法让它像我期望的那样工作。
我的第一个问题是使用个人访问令牌进行授权。我可以使用提供我公司电子邮件和密码的 UsernamePasswordCredentials 克隆存储库,但是,我找不到使用 PAT 执行此操作的方法。我找不到关于它的任何可靠信息,所以我尝试以不同的组合使用它,比如用它替换我的 password/username,但我无法让它工作 - 我总是得到 LibGit2Sharp.LibGit2SharpException: 'too many redirects or authentication replays'.
这应该意味着凭据无效,但我确定我的令牌有效并且我授权了所有范围,因此它应该能够使用我的凭据做我能做的一切。有没有我可以遵循的示例来启动它 运行?这是我目前使用用户名和密码的解决方案:
var co = new CloneOptions();
co.CredentialsProvider = (_url, _user, _cred) =>
new UsernamePasswordCredentials
{
Username = "username@companyname.com",
Password = "password"
};
Repository.Clone(@"remoteUrl-received-from-api", "destination-folder", co);
我的另一个问题是,URL 从这个 API 端点接收到的哪个:TFS API 是传递给 LibGit2Sharp 的正确的?我正在使用 "remoteUrl"(这是 TFS 网络应用程序 URL)进行克隆,并且在提供用户名和密码时它可以工作,但是,Repository.IsValid returns 错误。我对 TFS 和 GIT 不是很熟悉,所以请原谅我在这方面完全缺乏知识。
如果我明天不能正常工作,我将不得不使用 cmd.exe 进程和控制台命令,我真的很想避免这种情况 - 所以任何帮助都会非常感激。
在 libgit2sharp 中,似乎传递了令牌,因为带有空白密码的用户名特定于 GitHub。这可能不适用于 TFS/VSTS 托管的 git 存储库。
看看 GITHUB 中的这个相关问题:Does Git-Clone support Personal access tokens ?
对于 TFS/VSTS,如果您不想使用 UsernamePasswordCredentials 提供您的公司电子邮件和密码,您可以使用 备用身份验证凭据。
对于 url,您应该使用 TFS git remoterepo url。更多详细示例请参考此 link:
您可以使用备用凭据对 VSTS 进行身份验证。以下代码显示了如何向 VSTS 进行身份验证并执行克隆作业。
using LibGit2Sharp;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string surl = "https://youraccount.visualstudio.com/DefaultCollection/_git/Remoterepo";
string lpath = "C:\LocalPath";
CloneOptions co = new CloneOptions();
string un = "alternativeusername";
string pwd = "alternativepassword";
Credentials ca = new UsernamePasswordCredentials() {Username = un, Password = pwd };
co.CredentialsProvider = (_url, _user, _cred) => ca ;
Repository.Clone(surl,lpath,co);
}
}
}
使用任何用户名和个人访问令牌 作为密码可以在 Azure DevOps (VSTS) 上使用 git。这样您就可以将访问权限限制在最低限度。
假设您的 CloneOptions、FetchOptions、...变量的名称为 "o":
o.CredentialsProvider = (url, fromUrl, types) => new UsernamePasswordCredentials(){Username="Anything", Password = "Your personal access token here" };
我不知道它是否适用于 TFS。