![](/img/trans.png)
[英]Azure Devops OnPremise, fatal: Authentication failed for when cloning Git repo
[英]Authenticating to Azure Devops Git repo
我们正在开发一个系统,以自动将生成的项目提交到位于 Azure Devops 的 Git 存储库中。 我们想为此使用 libgit2sharp。 我们希望用户使用他们的 Microsoft 帐户进行身份验证,从身份验证请求中获取访问令牌 (jwt) 并将其用作身份验证手段。 但我们似乎无法让它发挥作用。
在另一篇文章中,我阅读了另外两种身份验证方法: 1. 替代帐户。 2. 个人访问令牌,PAT。 两者都在您的 devops 帐户的配置文件部分中制作。
我可以让替代帐户完美运行,但这不是我们的首选路线,因为它需要用户采取额外的行动。 PAT 似乎对我不起作用,并向我抛出一个错误,即“重定向或身份验证重放次数过多”。 我认为这是因为在 Microsoft 帐户上启用了两因素身份验证。
是否支持在启用 2FA 的 LibGit2Sharp 中使用访问令牌(jwt)?
using (var repo = new Repository({repo location}))
{
foreach (var file in file)
{
repo.Index.Add(file.Path);
repo.Index.Write();
}
var author = new Signature("{name}", "{name}", DateTime.Now);
var committer = author;
repo.Commit("Here's a commit i made!", author, committer);
var options = new PushOptions();
options.CredentialsProvider = (url, user, cred) => new UsernamePasswordCredentials() { Username = "{username}", Password = "{password}" };
repo.Network.Push(repo.Branches["master"], options);
}
个人访问令牌 (PAT)确实绕过了 MFA,因此这可能不是您遇到的错误。 PAT 是您的最佳选择,在推送时,您需要本地 Git 存储库的remote-url
如下:
https://pat:{PAT_HERE}@dev.azure.com/...
例如
https://pat:gaakbfootuial7ksj4uv55o52335tyhhaasbqdvbg5xgyy33t754@dev.azure.com/auroraloop/devenv/_git/devenv
提示:
您的代码的options.CredentialsProvider
部分可能完全按照我提到的remote-url
尝试设置如下:
options.CredentialsProvider = (url, user, cred) => new UsernamePasswordCredentials() { Username = "pat", Password = "{PAT_HERE}" };
对 PAT 进行硬编码以进行测试,如果成功,请查看 Azure Key Vault 方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.