如何在 GitLab-CE 中取消阻止 LDAP 用户

How do I unblock LDAP users in GitLab-CE

我们的一些通过 LDAP 进行身份验证的 GitLab 用户在 LDAP 身份验证用户帐户被锁定时被阻止。 我怎样才能解锁它们? GitLab-EE 似乎通过强制同步 LDAP 状态来提供此功能。 我如何使用 GitLab-CE 做到这一点?

我基本上是直接进数据库的:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq

update public.users set state='active';

注意:这将解锁 所有 用户

如果 LDAP 用户被阻止,通常意味着:

  1. 与 LDAP 服务器的连接中断或无法正常工作(配置文件中的管理员凭据错误)
  2. LDAP 中不再存在该用户。

如果用户仍然存在于 LDAP 中,但仍然被随机阻止,则可能表示与 LDAP 服务器的通信偶尔出现问题。在这种情况下,尝试再次登录应该可以,并且会解除对用户的阻止。

我有一个状态为 ldap_blocked 的用户 为了修复,我去了 user.state='active' 返回了 => "active" 然后我做了 user.unlock_access! 以取得良好的效果(可能没有必要)。 然后用户在 Web 控制台中被解除阻止。

更多详情

我按照此处的说明操作:https://docs.gitlab.com/12.10/ee/security/unlock_user.html

其中涉及进入 ruby 控制台:

sudo gitlab-rails console -e production

然后搜索用户并保存在一个临时变量中:

userJohn = User.find_by(email: 'john.smith@yourdomain.com')
userJohn.state
=> "ldap_blocked"

然后我稍微偏离了说明,直接将用户设置为活动状态,这似乎有效(说明中说 userJohn.unlock_access! 这对我不起作用)

userJohn.state='active'
=> "active"
userJohn.state #me checking to make sure
=> "active"

十次登录尝试失败后,用户进入锁定状态。

要解锁锁定的用户:

  1. 通过 SSH 连接到您的 GitLab 服务器。
  2. 在 Rails 控制台上启动 Ruby:

对于综合 GitLab:

sudo gitlab-rails console -e production

对于源安装:

sudo -u git -H bundle exec rails console -e production

找到要解锁的用户。您可以通过电子邮件或 ID 进行搜索。

user = User.find_by(email: 'admin@local.host')

user = User.where(id: 1).first

解锁用户:

user.unlock_access!
user.save

使用 Control+d 退出控制台

用户现在应该可以登录了。