Description
I am using LibGit2Sharp (version 0.28.0) with a Personal Access Token to access AZURE Repository.
UsernamePasswordCredentials =>
{
Username = "pat",
Password = PersonalAccessToken
}
CustomHeader => "Authorization: Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes($":{PersonalAccessToken}"))}"
Everything was working as expected until last week, when I started encountering exceptions while trying to interact with the remote repository (e.g., clone, pull, push).
Clone failed. | LibGit2Sharp.LibGit2SharpException | too many redirects or authentication replays
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) in //LibGit2Sharp/Core/Ensure.cs:line 154
at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result) in //LibGit2Sharp/Core/Ensure.cs:line 172
at LibGit2Sharp.Core.Proxy.git_clone(String url, String workdir, GitCloneOptions& opts) in //LibGit2Sharp/Core/Proxy.cs:line 278
at LibGit2Sharp.Repository.Clone(String sourceUrl, String workdirPath, CloneOptions options) in //LibGit2Sharp/Repository.cs:line 824
Activity
ethomson commentedon Aug 5, 2024
Did you upgrade anything locally (in other words, change the version of LibGit2Sharp) in the last week? If not, something has changed in Azure Repos.
You're using two authentication methods - first, you're setting
UsernamePasswordCredentials
, second you're adding your own credentials in theCustomHeader
. I would imagine that a remote host would be confused about this. What happens if you only use one of these mechanisms?belkhir-aziz commentedon Aug 5, 2024
Thank you for your reply.
No, I haven't changed the version.
It's just that authentication with PAT doesn't work for (push, pull...), I updated the PAT to make sure it's valid.
Using DefaultCredentials() does not give any error.
Everything was ok previous week.
I still get the issue when using one Mechanism only.
kastagg commentedon Oct 22, 2024
Is the value of username a <user> string? I've been able to start isolating a problem where the domain gets trimmed before it gets to Azure resulting in an incorrect username in the login.