microsoft / Git-Credential-Manager-for-Mac-and-Linux

Git Credential Manager for Mac and Linux stores credentials for Git version control securely. Provides secure logon for Visual Studio Team Services (visualstudio.com).
Other
406 stars 240 forks source link

Fails to detect dev.azure.com hosted repositories #90

Open iktyrrell opened 6 years ago

iktyrrell commented 6 years ago

Attempting to authenticate with Azure Devops hosted git repository (rebranded Visual Studio Team Services) fails and falls back to basic auth.

Looks like you haven't updated following the rebrand.

AurisAudentis commented 6 years ago

Can confirm. Is any workaround availiable?

Garfield550 commented 6 years ago

Add the following to gitconfig could call GCM4ML while interacting with dev.azure.com.

[credential "dev.azure.com"]
       authority = MSA

However, it can't complete the authentication with the following error info.

Fatal: java.lang.Error encountered.  Details:
java.io.FileNotFoundException: https://dev.azure.com/_apis/connectiondata

In my opinion, the problem is in https://github.com/Microsoft/Git-Credential-Manager-for-Mac-and-Linux/blob/7f954d807e45be91798420ba54475b007ee5862f/src/main/java/com/microsoft/alm/authentication/VsoAzureAuthority.java#L354

Azure DevOps uses dev.azure.com/<org> instead of <org>.visualstudio.com as the new naming rule, so the URI should be filled with organization name. Unit tests should also be changed.

ekrapfl commented 6 years ago

I can also confirm. I was able to work around it by reverting back to the <org>.visualstudio.com address for my clone. There will need to be a fix for this going forward, though.

alexreg commented 6 years ago

Need a fix for this ASAP. Any news?

mjl5007 commented 6 years ago

Same here, still waiting for a fix. How has this not been addressed yet?

esardaya commented 6 years ago

I agree that it's odd that this hasn't been fixed yet. As a workaround I managed to get it to work by changing the domain of my repo to use visualstudio.com. I changed: git clone https://<account>@dev.azure.com/<account>/<project>/_git/<repo> To: git clone https://<account>.visualstudio.com/<project>/_git/<repo>

ondrejgr commented 5 years ago

Workaround without switching domain and without SSH: I've used Personal Access Token instead of SSH successfully.

In my case the Git prompt was "Password for https://ondrejgr@dev.azure.com/:" So I created token name ondrejgr . And I used the generated token as a password.

ashtonian commented 5 years ago

👌

changing to visualstudio.com scheme works, but you will also have to manually visit https://microsoft.com/devicelogin and enter the code.

mtosic commented 5 years ago

The problem is in https://github.com/Microsoft/Git-Credential-Manager-for-Mac-and-Linux/blob/f332b8068cbbc0ef8e5d6956db44394f9e48be84/src/main/java/com/microsoft/alm/authentication/BaseVsoAuthentication.java#L258-L269

There is a strict check for detecting visualstudio.com domain. If you try to do any operation with dev.azure.com domain (now by default on Azure DevOps) the StringHelper.endsWithIgnoreCase check will fail and revert to basic authorization.

You should also add dev.azure.com domain. The best approach would be to get all the domain lists from remote endpoint, but I'm not sure if such endpoint exists.

I could make a pull request if you're accepting changes.

yentheo commented 5 years ago

+1 Weird that his is still an issue, dev.azure.com is available for a long time and this issue already exists for 5 months.

The weird thing is that I wanted to resolve this by not using GCM, just creating a PAT-token on dev.azure.com, but even when the token is valid for 1 year, the next day I need to generate a new one. I guess it has something to do with my keystore settings. But GCM always was a relieve for authenticating with visualstudio.com. I now reverted the domain name to account.visualstudio.com until this issue is resolved.

daviddesmet commented 5 years ago

Was struggling with this for hours until I found this issue. Changing to visualstudio.com also did the trick for me:

git remote set-url origin https://<account>.visualstudio.com/<project>/_git/<repo>
rgiese commented 5 years ago

Still a problem, FWIW. How does something like this kick around for months?

alexreg commented 5 years ago

@rgiese Obviously Microsoft don't care much about this product... it's sad, but there you go.

Bferreira5 commented 5 years ago

Still facing this issue.

nftw commented 5 years ago

@aaronbjork any view on when we can get a fix for this?

benc-uk commented 5 years ago

This is crazy, how is this not fixed? :(

jrbriggs commented 5 years ago

Sorry for the lack of traction here. As several of you have discovered, you can either use the org.visualstudio.com to allow the credential manager to continue to authenticate, or you can use SSH, which is what I'd recommend on both macOS and Linux.

We're currently building a GCM on .NET Core that we expect to have a public preview on macOS later this month which will resolve this issue. I would still recommend SSH usage in all but very specific scenarios once that is available though.

octogonz commented 5 years ago

We're currently building a GCM on .NET Core that we expect to have a public preview on macOS later this month which will resolve this issue. I would still recommend SSH usage in all but very specific scenarios once that is available though.

@jrbriggs who is this public preview for, then? Why bother implementing GCM for Mac at all?

On Windows, the GCM is a much better experience than SSH or personal access tokens. GCM prompts for a password that "just works" without having to go read instructions about which URL to visit or which text file to edit.

For Mac/Linux, is the underlying issue that the OS provides no easy way to display a Web View that can perform the single-sign on interaction? (In other words, those OS's expect you to compile Chromium from source code and distribute the binary with your application, and accept responsibility for any security issues that this implies?)

jrbriggs commented 5 years ago

For those of you on macOS, please go try GCM Core's macOS preview release

kunjee17 commented 5 years ago

@jrbriggs I did install preview release. And it works for azure but breaks every damn git repo I have. Bit bucket, github, gitlab you name it. How to remove it and revert the settings ?

mjcheetham commented 5 years ago

[..] it works for azure but breaks every damn git repo I have. Bit bucket, github, gitlab you name it.

@kunjee17 I'm sorry to hear this. If you wouldn't mind, please could you open an issue on the GCM Core project, including a description of any error messages and collect the GCM trace logs (the issue template describes how to do this)?

We would like to fix the problems you're experiencing.

How to remove it and revert the settings?

To uninstall the GCM Core preview, please run the following uninstall script from Terminal:

$ sudo /usr/local/share/gcm-core/uninstall.sh

If you installed the GCM4ML "Java GCM" (this product) via Homebrew, you'll need to re-link it, and then reconfigure it as the Git credential helper by running the following commands:

$ brew link git-credential-manager
$ git-credential-manager install
kunjee17 commented 5 years ago

@mjcheetham thanks for reply. I will give it a shot. Will keep you posted here. And also file another issue.

kunjee17 commented 5 years ago

@mjcheetham I installed 2.0.4 version again, via brew. It started working for now. Thanks for helping.

Jucer74 commented 5 years ago

Was struggling with this for hours until I found this issue. Changing to visualstudio.com also did the trick for me:

git remote set-url origin https://<account>.visualstudio.com/<project>/_git/<repo>

This Solution Works for me only change the Link in this way

git remote set-url origin https://\account>@dev.azure.com/\<organization/\/_git/\

Also I have to change the Alias for the account to allow Special characters in the account name

gitjairam commented 4 years ago

@Jucer74 please let me know what you mean by "Alias for the account to allow Special characters in the account name" ? i have a dot "." in my account name like ("username1.XY") to login windows.

gitjairam commented 4 years ago

Was struggling with this for hours until I found this issue. Changing to visualstudio.com also did the trick for me:

git remote set-url origin https://<account>.visualstudio.com/<project>/_git/<repo>

This Solution Works for me only change the Link in this way

git remote set-url origin https://account>@dev.azure.com/<organization//_git/

Also I have to change the Alias for the account to allow Special characters in the account name

@Jucer74 please let me know what you mean by "Alias for the account to allow Special characters in the account name" ? i have a dot "." in my account name like ("username1.XY") to login windows.

mecoFarid commented 4 years ago

For those of you on macOS, please go try GCM Core's macOS preview release

Sorry for my language but the same shit happens with this junk on MacOS. No prompt is displayed, it just asks for an organization password.