Остальные API с Gerrit настроен с аутентификацией http
У меня есть работающая установка gerrit, единственное, что gerrit настроен с HTTP-аутентификацией, а nginx управляет аутентификацией.
Теперь я хочу использовать gerrit restapi (просто установить проверенную метку с помощью curl как определенного пользователя). для этого мне нужно использовать http пароль, сгенерированный gerrit в панели настроек. так что вы можете увидеть проблему. есть два разных пароля. сначала я пытаюсь установить один и тот же пароль для обоих (пароль nginx находится под моим контролем, gerrit нет), затем я изменяю попытку создать новое местоположение для /a/ (префикс gerrit для аутентификации) и удаляю пароль nginx на этом маршруте, пока не повезло. Конечная конфигурация nginx:
location /a/ {
proxy_pass http://127.0.0.1:8118;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
auth_basic "Gerrit";
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
location / {
proxy_pass http://127.0.0.1:8118;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
auth_basic "Gerrit";
auth_basic_user_file /etc/nginx/conf.d/gerrit.htpasswd;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
Мой конфиг геррита:
[gerrit]
basePath = git
canonicalWebUrl = http://gerrit.example.com/
[database]
type = postgresql
hostname = 127.0.0.1
database = reviewdb
username = gerrit2
[index]
type = LUCENE
[auth]
type = HTTP
[sendemail]
smtpServer = mail.vada.ir
from = ${user} Code Review <git@vada.ir>
smtpUser = git@vada.ir
smtpPass = T7SMkUYRqMP
[container]
user = gerrit2
javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://127.0.0.1:8118/
[cache]
directory = cache
[plugins]
allowRemoteAdmin = true
изменение аутентификации gerrit - это только вариант, если мы можем защитить его от регистрации.
Спасибо.