我几乎所有用户都设置为本地(技术为SonarQube doc称之为用户)用户并且刚刚安装了&配置LDAP插件2.2以连接到我的Active Directory。
连接正常:如果SonarQube未知但LDAP中存在的用户尝试登录,则会自动创建其用户。
我想将现有的SonarQube用户(未链接到LDAP)转换为LDAP用户,以便他们的密码和组成员资格自动更新,但无法在文档中找到如何执行此操作。
我找到了这个答案how to change a local user to ldap,但它没有用到:当我尝试使用LDAP凭据和相同的登录信息登录时,我得到了一个"身份验证失败。"。
一些背景知识:
编辑: 我更新到最新的LTS版本5.6.6。 启用跟踪日志: 当我尝试使用已停用的本地用户登录时(希望这会在LDAP中找到它):
TRACE web[sql] time=0ms | sql=SELECT count(`users`.id) AS count_id FROM `users` WHERE (login='tguerin' and user_local=1)
TRACE web[sql] time=1ms | sql=SELECT * FROM `users` WHERE (login='tguerin' AND active=1) LIMIT 1
TRACE web[sql] time=0ms | sql=SELECT * FROM `properties` WHERE (((`properties`.`resource_id` IS NULL AND `properties`.`user_id` IS NULL)) AND (`properties`.`prop_key` = 'sonar.allowUsersToSignUp')) LIMIT 1
DEBUG web[http] POST /sessions/login | time=224ms
日志中没有更多内容:没有调用LDAP
当我尝试使用不存在的用户(既不是本地用户也不是LDAP用户)登录时:
TRACE web[sql] time=3ms | sql=SELECT count(`users`.id) AS count_id FROM `users` WHERE (login='notLocal' and user_local=1)
DEBUG web[o.s.p.l.LdapUsersProvider] Requesting details for user notLocal
DEBUG web[o.s.p.l.LdapSearch] Search: LdapSearch{baseDn=...), parameters=[notLocal], attributes=[mail, cn]}
DEBUG web[o.s.p.l.LdapContextFactory] Initializing LDAP context {java.naming.provider.url=ldap://x.x.x.x:389, java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.security.principal=..., com.sun.jndi.ldap.connect.pool=true, java.naming.security.authentication=simple, java.naming.referral=follow}
DEBUG web[o.s.p.l.LdapUsersProvider] User notLocal not found in <default>
TRACE web[sql] time=0ms | sql=SELECT * FROM `properties` WHERE (((`properties`.`resource_id` IS NULL AND `properties`.`user_id` IS NULL)) AND (`properties`.`prop_key` = 'sonar.allowUsersToSignUp')) LIMIT 1
DEBUG web[http] POST /sessions/login | time=66ms
按预期检查数据库,然后检查LDAP。
Edit2:为了排除我服务器上特定配置/插件的问题,我启动了一个Docker Sonarqube 5.6.6容器,添加了一个本地用户,添加了LDAP插件(重启,LDAP配置确定),停用了用户,尝试登录:相同的行为(即不查询LDAP服务器)
答案 0 :(得分:0)
由于似乎没有任何效果,我决定检查数据库。
将表格user_local
中的字段users
从0
更改为1
就可以了。我无法想象这是SonarQube推荐的,但截至目前,我没有发现任何副作用。