Gerrit

配置了 http 身份驗證的 gerrit 的 rest api

  • August 25, 2018

我有一個工作的 gerrit 安裝,唯一的事情是,gerrit 配置了 HTTP 身份驗證後端,並且 nginx 處理身份驗證。

現在,我想使用 gerrit restapi(只是通過 curl 將 Verified 標籤設置為特定使用者)。為此,我需要在設置面板中使用 gerrit 生成的 http 密碼。所以你可以看到問題。有兩個不同的密碼。首先我嘗試為兩者設置相同的密碼,(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 配置是:

[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 身份驗證只是一種選擇。

謝謝你。

我發現正常(基本身份驗證)在我的設置中無法使用 api。但是使用數字身份驗證沒有問題。

引用自:https://serverfault.com/questions/741298