Невозможно войти после редактирования адресов электронной почты - PullRequest
1 голос
/ 26 сентября 2019

У меня на сервере работает Gerrit v3.0.0, вчера все работало нормально.

Вот мой метод аутентификации:

[auth]
    type = http
    emailFormat = {0}@domain.com

Я не уверен, что это причинамоей проблемы, но я мог удалить свой адрес электронной почты xxx@domain.com вчера.Сегодня, когда я пытаюсь снова войти в интерфейс, я получаю сообщение об ошибке 403 и error_log говорит:

Cannot assign external ID "username:xxx" to account 1000003; external ID already in use.

Итак, я удалил внешние идентификаторы для этой учетной записи, что, вероятно, было ошибкой, поскольку я все еще получалОшибка 403 и следующие сообщения в logs / error_log:

[HTTP-71] WARN  com.google.gerrit.server.account.AccountManager : Email xxx@domain.com is already assigned to account 1000001; cannot create external ID gerrit:xxx with the same email for account 1000057.
[HTTP-71] ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unable to authenticate user "xxx"
com.google.gerrit.server.account.AccountException: Email 'xxx@domain.com' in use by another account

Так что, кажется, геррит пытается создать новую учетную запись вместо входа в мою.Обратите внимание, что в экземпляре есть другой пользователь, и он все еще может использовать интерфейс gerrit.Я искал некоторые неясные темы, но, похоже, решения не работают.Любая идея приветствуется, спасибо.

1 Ответ

1 голос
/ 27 сентября 2019

Похоже, я все-таки был на правильном пути.

Что я сделал:

Причина ошибки

Я измениладрес электронной почты моей учетной записи, а затем изменил предпочитаемый адрес электронной почты.Геррит, кажется, не поддерживает это и напутал с внешними идентификаторами.

Причина второй ошибки

Я удалил внешний идентификатор для учетной записи Iне удалось войти в систему (либо использовать конечные точки API https://gerrit -review.googlesource.com / Documentation / rest-api-accounts.html или получить All-Users: refs / meta / external-id)

Но я удалил не только внешний идентификатор "mailto:<my_username>@<domain>.com", но и "gerrit:<my_username>".

После этого ничего из того, что я пробовал, не позволило мне снова войти в систему.

Разрешение

Я создал новый внешний идентификатор в All-Users: refs / meta / external-id со следующим:

[externalId "gerrit:<my_username>"]
    accountId = <my_account_id>
    email = <my_username>@<domain>.com

Примечание: имя этого файла - SHA1 "gerrit:<my_username>"

Я отправил свои изменения в Gerrit

Примечание. Вам необходимо отредактировать доступ для всех пользователей, чтобы разрешить push

И все снова заработало.

Не стесняйтесь добавлять к этому что-нибудь, это может быть не очень тщательно.

...