一、问题描述

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';

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐