我在centos服务器上安装了gerrit,但是我的身份验证有问题。我想为给定组中的centos用户提供身份验证权限。基本上,gerrit组中的每个用户都应该可以使用其密码登录。
但是,当我访问gerrit链接时,有一个重定向到gerrit:8081 / login当我收到以下消息时:
HTTP服务器未在授权中提供用户名 将请求转发给Gerrit Code Review时的标题。
如果HTTP服务器是Apache HTTPd,请检查代理配置 包括具有适当位置的授权指令,确保 它以'/'结尾:
你有任何提示,为什么这不起作用?
/etc/httpd/conf/httpd.conf文件的VirtualHost部分如下所示:
<VirtualHost gerrit:8081>
ServerName gerrit
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location "/login/">
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /etc/passwd
Require valid-user
</Location>
AllowEncodedSlashes On
ProxyPass /r http://localhost:8081/r nocanon
</VirtualHost>
和gerrit.config文件:
[gerrit]
basePath = /repos
canonicalWebUrl = http://freshattitude.eu:8081/
[database]
type = mysql
hostname = localhost
database = gerrit
username = gerrit
[auth]
type = HTTP
emailFormat = {0}@example.com
[sendemail]
smtpServer = localhost
smtpUser = root
[container]
user = gerrit
javaHome = /usr/java/jdk1.7.0_25/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8081/
[cache]
directory = cache
答案 0 :(得分:1)
gerrit.config
httpd.listenUrl = proxy-http://127.0.0.1:8081/
让Gerrit知道前面的代理。
此外,您的Apache vhost必须侦听不同的端口(至少当两个服务在同一服务器上运行时)。事实上,我想知道你是如何在同一时间开始的; - )
因此,为端口80设置apache vhost,而不是端口8081.然后用户将连接到http://freshattitude.eu/。
最后,再次在gerrit.config
中,您必须修复canonicalWebUrl
并删除:8081
,因为您正在使用代理,这就是您告诉Gerrit什么的它对外界的URL是。
我认为你应该经历一次Gerrit docs on reverse proxy config。
之后,您将最终只使用本地主机端口8081上的Gerrit和侦听端口80的apache(当然,您可能希望使用SSL,然后使用proxy-https
中的gerrit.config
变体。)< / p>
答案 1 :(得分:0)
这是运行并帮助您https://groups.google.com/forum/?hl=en#!topic/repo-discuss/qwQxy_izXzo
的配置谢谢&amp;问候,
Alok Thaker
答案 2 :(得分:0)
据我所知,Gerrit要求在使用HTTP身份验证时在请求标头中提供身份验证详细信息。因此,使用此匿名访问时是不可能的。
因此,我将Location "/login/"
更改为Location "/"
,然后在转到Gerrit之前始终进行身份验证。它有效,我可以忍受它。
这实际上可能是一些在某个地方悄悄爬行的回归错误,但是我的工作方式如何。