团队接入统一账号时,Coverity Connect的连接测试通过了,开发人员却还是登不进去。连接测试用的是查询目录的绑定账号,开发人员登录用的则是自己的账号,中间还要经过用户查找和账号导入。Coverity怎么配置LDAP认证Coverity的LDAP认证失败怎么排查,关键是把这几步分开验证。若用户已经能登录,只是看不到项目,排查方向就要转到组成员和项目权限。
一、Coverity怎么配置LDAP认证
配置工作在Coverity Connect网页端进行。建议先用一个普通目录账号试通查询和登录,确认结果后再扩大使用范围。
1、填写服务器和绑定账号
①使用管理员账号登录,进入【Configuration】→【System】→【LDAP Configuration】,点击【Add】。
②在【Host Name】和【Port】中填写目录服务的主机名与监听端口,在【Base DN】中填写目录根,例如【dc=example,dc=com】。根据目录服务的实际配置选择【Security】中的【SSL】或【TLS】,端口随所选连接方式填写。
③使用专用查询账号时,取消【Use anonymous bind】,填写【Bind DN】和【Bind Password】。点击【Connect to LDAP Server】,确认连接测试通过。
绑定账号用来查目录。它能连上服务器,并不表示它能读取所有用户和组;查询权限还要用实际条目验证。
2、设置用户查找范围
用户登录时输入的名称,必须能按配置找到对应的目录条目。比如目录里同时保存短用户名和邮箱,员工习惯输哪一个,要和映射字段对得上。
①在【User Search Base DN】中填写相对于【Base DN】的用户目录路径。若根为【dc=example,dc=com】,用户位于其下的People组织单元,这里可填【ou=People】。
②按实际条目填写【User ObjectClass】与【Username Attribute】,再核对姓名和邮箱的映射。OpenLDAP中可见【inetOrgPerson】和【uid】这一组合,部署有定制时以实际条目为准。
③在用户搜索测试区的【Username】中填入已知账号,运行该区测试,确认能找到对应用户后保存LDAP配置。
3、启用登录并验证测试账号
①打开【Configuration】→【System】→【Authentication and Sign In】,在【Authenticate with】中选择【LDAP】,点击【Done】。
②进入【Configuration】→【Users&Groups】,添加测试用户或从LDAP导入目标组。若单位允许首次登录时建号,也可在登录设置中启用【Create LDAP users automatically on sign-in】。
③保留原管理员会话,另开浏览器窗口,用测试账号实际登录,再打开它应有权查看的项目。
二、Coverity的LDAP认证失败怎么排查
先弄清是所有目录用户都进不去,还是只有某个人失败。记下失败时间,再对照服务器端日志,逐段检查连接、用户查找和账号状态。
1、连接测试失败,查网络和证书
①在运行Coverity Connect的主机上验证【Host Name】能否解析、【Port】能否连通。复现一次连接失败,再在【cim.log】中按时间查找对应记录。
②若日志指向证书握手,核对【Security】与实际监听方式,检查主机名是否与证书匹配、证书是否过期,以及Coverity Connect使用的Java信任库是否包含所需的签发证书。
③需要指定自建信任库时,用【keytool】导入所需的CA证书,在【system.properties】的【java_opts_post】中核对【javax.net.ssl.trustStore】指向的路径。按变更安排重启服务后,重新执行【Connect to LDAP Server】。
2、连接成功但搜不到人,查目录路径
员工调部门后,目录条目可能被移到另一个组织单元。旧同事照常登录,只有调岗人员找不到时,用户搜索范围就很值得查。
①回到【LDAP Configuration】,将【User Search Base DN】与【Base DN】合起来,对照目标用户条目的实际路径。检查是否重复填写了域后缀,或者搜索范围漏掉了该用户所在分支。
②核对【Username Attribute】存的是短用户名、邮箱还是其他标识,再用实际对应的值重测。若路径和映射都正确,请目录管理员确认【Bind DN】对该分支和相关属性有读取权限。
3、搜得到人但登录失败,查账号状态
①在【Authentication and Sign In】中确认认证方式及自动建号设置。若启用了【Only create users that are members of imported group(s)】,核对该用户是否属于已导入的组。
②在【Users&Groups】中核对该账号是否已导入、是否停用、是否关联到正确的目录。再请目录管理员核实该用户的密码状态及账号是否锁定。
能搜到用户,只能说明查询找到了条目。用户自己的密码验证、Coverity账号是否可用,还要看实际登录结果。若故障恰好发生在绑定账号密码轮换后,也应核对Coverity里保存的绑定密码是否已更新。
三、Coverity接入LDAP后怎么核对项目权限
登录成功后,用户能看到哪些项目,由Coverity Connect的角色和授权范围决定。目录组存在,也不等于它已经在Coverity里获得对应权限。
1、核对组搜索和同步结果
①在【LDAP Configuration】中核对【Group Search Base DN】、【Member Attribute】和【Members stored by】,确认成员字段保存的是完整DN还是用户名,再点击【Retrieve Groups】测试。
②打开【Users&Groups】里的目标组,查看【Members】是否包含测试用户。若目录成员刚调整,可在组详情中执行【Refresh LDAP group membership now】,再检查成员列表。
组能搜到、成员却没进来时,要留意成员是否通过嵌套组加入。不同版本的嵌套组设置有差异,应以当前版本的导入选项和实际成员列表为准。
2、用普通账号验证授权范围
①在【Users&Groups】中选中目标组,打开【Roles】,核对角色及其作用范围是否覆盖目标项目。
②用测试用户重新登录,确认能打开应当访问的项目,再确认未授权的项目没有出现在该账号的可访问范围内。
总结
接入LDAP时,连接成功、能查到人、能登录和能看项目,是四项不同的验收结果。把测试账号、验证时间和失败环节留在变更记录里,日后遇到密码轮换或人员调岗,就能较快判断该查目录配置还是项目授权。有相关需求,欢迎交流。
