libgit2sharp usernamepasswordcredentials, кажется, игнорирует имя пользователя? - PullRequest
0 голосов
/ 10 апреля 2020

Мы используем GIT для развертывания, и все это работает великолепно. В данный момент я пишу функциональность, позволяющую клиенту переключаться на другой репозиторий Deployment - в конце концов, мы можем в какой-то момент принять решение начать развертывание из другого места, верно?

Мы создаем репозиторий в Azure и мы генерируем GIT учетные данные, используя кнопку после создания репозитория: enter image description here

Поэтому я предоставляю пользователю форму, где он может ввести новый URL, имя пользователя и пароль, а затем я go проверяю .... (vb. net code)

    Dim oCH As LibGit2Sharp.Handlers.CredentialsHandler = Nothing
    Dim oItems As IEnumerable(Of LibGit2Sharp.Reference) = Nothing
    Dim oCred As LibGit2Sharp.UsernamePasswordCredentials = Nothing

    Try
        oCred = New LibGit2Sharp.UsernamePasswordCredentials
        oCred.Username = tbBuildsCredential.Password
        oCred.Password = tbBuildsPassword.Password
        oCH = New LibGit2Sharp.Handlers.CredentialsHandler(Function(_url, _user, _cred) oCred)
        oItems = LibGit2Sharp.Repository.ListRemoteReferences(url:=tbBuildsRepository.Text,
                                                              credentialsProvider:=oCH)
        If oItems Is Nothing Then
            Return False
        End If
    Catch ex As Exception

(я опущу обработку ошибок и исправлю код в Окончании, поскольку он не имеет значения )

Хорошо - я тестирую это, и я ввожу действительный URL-адрес хранилища в azure devops:

https://<ourcompanynamehere>@dev.azure.com/<ourcompanynamehere>/<projectnamehere>/_git/<repohere>

Я использую правильное имя пользователя и пароль, и все в порядке. , он возвращает объект oItems, его .Count> 0 ... счастливых дней. Поэтому я пытаюсь сделать это с некоторыми недопустимыми значениями, чтобы посмотреть, что произойдет ... Неверный URL возвращает этот пульт никогда не подключался - счастливые дни! Поэтому я пытаюсь сделать это с правильным URL-адресом, но с неверным именем пользователя ... эй, подождите .... он все еще возвращается с действительным объектом oItems ??? Когда я искажаю пароль, он снова возвращается с , к которому этот пульт никогда не подключался , но кажется, что имя пользователя полностью игнорируется.

Это ошибка в dev. azure .com способ сделать GIT? Это то, что мне нужно беспокоиться? Зачем вообще "имя пользователя", если оно все равно игнорируется?

1 Ответ

1 голос
/ 11 апреля 2020

Это ошибка в dev. azure .com способ сделать GIT? Зачем вообще иметь имя пользователя, если оно>> все равно игнорируется?

Нет, это ожидаемое действие 1006 *, поскольку вы используете Git Credential Manager (GCM) для генерации пароля.

На самом деле это не официальный пароль. Он генерирует токен личного доступа после нажатия кнопки Generate Git Credentials, и его область действия составляет только Repos(Read&Write).

В настоящее время на странице go Security (https://dev.azure.com/ {orgname} / _ usersSettings / tokens) вы увидите, что один токен может быть добавил, что Token name похоже на git: https://dev.azure.com/{orgname} on {machine platform}.

enter image description here

Для токена личного доступа я уверен, что вы знаете, что токен PAT привязан на одну учетную запись пользователя, когда он генерируется. Другими словами, вам не нужно вводить имя пользователя дополнительно при использовании PAT в качестве метода авторизации. Вот почему имя пользователя все равно игнорируется.

Вы также можете проверить это, сделайте c, чтобы получить Как работает Git Диспетчер учетных данных


Это то, о чем мне нужно беспокоиться?

Просто относитесь к нему как к паролю, чтобы сохранить в тайне, это не вызовет особых проблем.

В большинстве случаев вам не нужно беспокоиться Это. Поскольку срок действия этого токена истекает очень скоро и не превышает 1 дня.

Кроме того, как я уже упоминал выше, область применения этого токена распространяется только на Репо с разрешением Read&Write. Даже если кто-то случайно получит этот токен, он не сможет выполнять операции вне Репо.

...