繁体   English   中英

验证到 Azure Devops 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

提示:

  • PAT 将获取生成它的 Azure DevOps 用户的权限,因此该用户必须具有对 repo 的贡献权限。
  • 无法自动创建 PAT ,您必须将其预先存储在某处,如果您不想硬编码(您不应该)考虑使用 Azure Key Vault 来存储和检索值,我确信他们有 c# 库。

您的代码的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM