无法使用 LDAP 登录/进入管理员模式

Posted

技术标签:

【中文标题】无法使用 LDAP 登录/进入管理员模式【英文标题】:Can't login/enter admin mode with LDAP 【发布时间】:2021-10-03 18:36:17 【问题描述】:

问题

如何绕过 LDAP 登录并删除管理任务的额外身份验证?

问题

我无法进入管理员模式。当我使用常规凭据登录并尝试更改一些管理设置时,它会要求 LDAP 凭据进入管理模式。问题是 LDAP 太慢了,对我不起作用(我稍后会解决这个问题)。

上下文

我在本地配置 gitlab-ce 13.11.3-ce.0 作为演示。我设置了一些我不想完全重置的东西。管理员用户有定期身份验证。由于我通过 LDAP 登录(我使用与 LDAP 相同的用户名登录),我无法再进入管理员模式,尽管我可以使用普通凭据以管理员用户身份登录。

我混合了管理员帐户的常规和 LDAP 凭据。

我尝试了什么:

我尝试在/etc/gitlab/gitlab.rb 使用设置gitlab_rails['ldap_enabled'] = false 关闭LDAP 登录,但表单没有显示(但显示了LDAP 标题)。

我尝试使用gitlab-rails console 重置用户密码。

user = User.find_by(email: 'user@example.com')
user.password = 'secret_pass'
user.password_confirmation = 'secret_pass'
user.save!
user.skip_reconfirmation!
我也在尝试修复 LDAP 身份验证,但现在更重要的是我可以访问管理员设置。

【问题讨论】:

【参考方案1】:

正如the documentation 所述,可以使用以下命令轻松禁用此身份验证:

gitlab-rails runner '::Gitlab::CurrentSettings.update!(admin_mode: false)'

当我找到上面的代码时,我已经使用以下方法解决了问题:

访问服务器后,我在 Gitlab 中使用 gitlab-rails runner 创建了另一个具有常规身份验证的管理员用户。

/path/to/bypassldap.rb:

username = "bypassldap"
user = User.new(
    username: username,
    name: username,
    email: "#username@gitlab.allowed.domain",
    notification_email: "#username@gitlab.allowed.domain",
    password: username,
    password_confirmation: username,
    admin: true
)
user.skip_confirmation!
user.save!

然后跑:

gitlab-rails runner /path/to/bypassldap.rb

我使用创建的用户成功登录,然后取消设置 管理区域 > 下的选项需要对管理任务进行额外身份验证 设置 > 常规 > 展开登录限制部分.

更多详情请见the documentation。

【讨论】:

以上是关于无法使用 LDAP 登录/进入管理员模式的主要内容,如果未能解决你的问题,请参考以下文章

引用的帐号当前已锁定,且可能无法登录,win7的电脑,怎么解开?

Apex 4.2 LDAP 身份验证 - 锁定用户

带有 LDAP 注销的 Spring Security 无法删除会话

为啥我登录后无法进入管理 REST API 请求映射 - Spring Boot

电脑密码登录显示账户以锁定怎么办

Spring 安全性、ssl ldap 和无证书