一、问题描述
Gitlab集成了ldap认证,由于公司人员组织架构调整,导致一部分人登录gitlab报错。
出现两种报错:
Could not authenticate you from Ldapmain because "Undefined method `provider' for nil:nilclass".
Could not authenticate you from Ldapmain because "Invalid credentials for xxx".
通过管理后台发现这些用户为禁用状态,且无法取消禁用。
二、解决方案:
情况一:密码错误
确认账号密码没有输错,因为密码错误也会报这个错。
情况二:邮箱不一致
确认Ldap用户的邮箱与Gitlab用户的邮箱一致,我发现有些员工在Ldap中没有录入邮箱,修改Ldap用户邮箱为Gitlab邮箱后可正常登录。
情况三:手动修正身份标识(DN)
处理完邮箱后有个别员工还是无法登录,通过手动修正Gitlab中的用户身份标识解决。
用管理员账号登录Gitlab后台,从管理中心进去用户管理界面,找到对应用户,可在用户详情看到用户的身份标识(对应Ldap中的DN)还是旧的组织架构,编辑修改成新的DN后可正常登录。
身份标识修改参考下图:
情况四:从数据库修复用户状态
我们gitlab是通过docker部署的,这边说下容器里postgresql的连接方式。
1.进入容器
2.切换用户:
su - gitlab-psql
3.连接postgresql:
psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
4.查看异常用户:
SELECT name,username,state FROM users WHERE state='ldap_blocked';
5.更新用户状态:
Update users set state='active' WHERE state='ldap_blocked';
版权归原作者 魔希达 所有, 如有侵权,请联系我们删除。