使用配置了 http 身份验证的 Gerrit 的 rest api

使用配置了 http 身份验证的 Gerrit 的 rest api

我有一个可运行的 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 <[email protected]>
        smtpUser = [email protected]
        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 身份验证才是一种选择。

谢谢。

答案1

我发现在我的设置中,普通(基本身份验证)无法与 api 配合使用。但是使用数字身份验证工作正常。

相关内容