处理升级Gerrit后REST API无法使用

背景:

升级Gerrit,从2.13到3.2

遇到问题:

升级到新版后,rest api无法使用了,要么提示401,要么提示 Unauthorized

官方文档上面,说使用basic auth就能直接连上rest api。匿名用户可以直接查询接口,登录用户,在host后面增加"/a"后缀。

但实际上,我匿名访问,是会报401错误的。

而登录后,又报Unauthorized。

使用htpasswd设置的密码不行,使用Gerrit生成的随机密码也不行。

 

原因分析:

经过一番排查后,发现LDAP认证方式下,直接使用ldap账户和密码,是可以使用Gerrit 的rest api的。

而htpasswd设置的密码,是通过Nginx或者Apache进行鉴权的,也就是登录网页的时候,那个弹窗的处理,是Nginx处理的。这时候根本就没有进入到Gerrit,具体可以看处理升级Gerrit后REST API无法使用

具体见:https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#set-http-password

2、在服务器上操作htpasswd -m gerrit.passwd admin,输入旧密码

这时候,htpasswd和Gerrit的密码就统一设置成原本的旧密码了。

对于其他需要使用rest api的账户,可以直接使用admin账户,调用rest api,写入账户的HTTP密码到Gerrit上。

方法二:使用LDAP或者OpenID等认证方式

可以使用ldap方式,一般公司内都是会有统一的ldap服务,接入公司的ldap账户,就不存在上面的问题了。

版权声明:玥玥 发表于 2021-06-11 3:42:10。
转载请注明:处理升级Gerrit后REST API无法使用 | 女黑客导航