Как Git Credential Manager различает разные серверы?

Когда я подключаюсь к серверу TFS с помощью Git, в Git Credential Manager для Windows появляется окно входа Microsoft. Однако, когда я подключаюсь к серверу GitHub, он вызывает другое диалоговое окно для входа в GitHub. Я хочу знать, какие условия использует Git Credential Manager для управления всплывающим окном. Это сервер. Сервер возвращает значение? Имя хоста?

1 ответ

Это основано на URL. Откройте диспетчер учетных данных, и вы увидите что-то вроде этого:

Более подробная информация о точном рабочем процессе находится здесь:

Менеджер потока:
git-credential находит, что credential.helper = manager, и вызывает git-credential-manager с опцией "get".
git-credential-manager не хватает учетных данных для +. git-credential-manager просматривает конфигурацию +, чтобы определить, являются ли они базовыми учетными данными, m-фактором VSO или двухфакторной аутентификацией GitHub.
В случае базовых учетных данных git-credential-manager говорит git-credential, что у него нет никаких учетных данных.
Затем git-credential запрашивает учетные данные у пользователя в командной строке.
Пользователь вводит учетные данные.
git-credential вызывает git-credential-manager с опцией store и предоставляет учетные данные для хранения.

Дальнейшая конфигурация может помочь вам установить конкретный метод авторизации, т.е. если бы я хотел использовать NTLM для авторизации взаимодействия с размещенным на TFS git-репо, я бы ввел

git config --system credential.myserver.com.authority Integrated 

который явно указывает всем репозиториям использовать Integrated/NTLM вместо того, чтобы пользователь вводил свое имя пользователя / пароль (даже не один раз). Очевидно, измените myserver.com на свой собственный домен. Это также имеет дополнительное преимущество: он не ломается, когда пользователь должен обновить свой пароль. В противном случае им придется вручную удалять / изменять учетные данные из диспетчера учетных данных.

Другие вопросы по тегам