gitlab社区版支持多ldap登录

author author     2023-05-01     779

关键词:

参考技术A 安装配置Gitlab社区版的时候发现Gitlab支持多LDAP配置,配置完成后发现登录页面还是只有一个登录选项。翻阅官方文档才发现社区版原来不支持多LDAP登录。业务方还是想要多LDAP登录支持,抛来一篇文章:https://segmentfault.com/a/1190000016340093。

看看文章中的修改方案,改动的文件是: /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/gitlab_omniauth-ldap-1.2.1/lib/omniauth/strategies/ldap.rb

这个是LDAP登录页的登录callback,作者在这里通过硬编码方案加上了第二个LDAP登录配置,同时还修改了另外一个地方:

作者方案中第二个LDAP更多的类似一个备用配置,如果两个LDAP用户出现冲突了,第二个LDAP的同名用户就永远登录不了了。

看完这个方案,总觉得有些不太满意,还得找一找优雅的方案。

看代码吧,虽然不会ruby,但老外的代码实现得一般还是很优雅的,读一读改一改还是问题不大的。

很快找到了这个文件:/opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared/_signin_box.html.haml,是登录框的页面模版:

从页面中可以发现代码中对多LDAP登录没有限制,然后查看一下生成的配置文件,多LDAP也都在配置文件中,都没有问题。

只能继续跟踪一下ldap_servers的相关实现,最后找到两个文件:/opt/gitlab/embedded/service/gitlab-rails/app/controllers/concerns/renders_ldap_servers.rb和/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/auth/ldap/config.rb。

我们先看看第一个文件renders_ldap_servers.rb:

代码很简单,如果sign_in_enabled,就返回配置的available_servers。Ldap::Config代码就在第二个文件config.rb中,截取相关代码如下:

在这个代码中我们找到了多LDAP登录限制的“罪魁祸首”——Array.wrap(servers.first)——通过这行代码选取了多个LDAP配置中的第一个,简单的修改此处即可优雅的解锁gitlab社区版的多LDAP支持。

最终解决方案记录如下:

修改/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/auth/ldap/config.rb文件:

修改后重启一下gitlab即可。

gitlab11.2.3通过ldap调用freeipa登录(代码片段)

FreeIPA和Gitlab的搭建,可以参考我之前的博客。FreeIPA域名server.zhuxu.co(内部测试,修改一下gitlab的host文件ipFreeIPA域名)vim/etc/gitlab/gitlab.rbgitlab_rails[‘ldap_enabled‘]=truegitlab_rails[‘ldap_servers‘]=YAML.load<<-‘EOS‘mai 查看详情

我们可以在 Gitlab 社区版中使用触发器吗

】我们可以在Gitlab社区版中使用触发器吗【英文标题】:CanweuseTriggerinGitlabcommunityedition【发布时间】:2021-09-1621:37:50【问题描述】:?我在尝试配置多项目管道时收到错误消息。这是我的代码:stages:-testtesting:stage:testscript:-echo"Pa... 查看详情

gitlab社区版11.0.2用户管理教程

Gitlab地址:http://xx.xx.xx.xx/users/sign_in登录之后,主界面 右上角功能按钮,分别为管理区域、新建、问题、合并请求、待办事件、个人设置 选择管理区域按钮 可以根据需要选择新建项目、新建用户和新建组一、项目管... 查看详情

gitlab使用ad域用户登录

sudovi/etc/gitlab/gitlab.rb添加以下内容:gitlab_rails[‘ldap_enabled‘]=truegitlab_rails[‘ldap_servers‘]=YAML.load<<-‘EOS‘main:#‘main‘istheGitLab‘providerID‘ofthisLDAPserverlabel:‘LDAP‘host:‘xxx.xxx.xxx.xxx‘  #指定ldap服务器地址port:389    ... 查看详情

Gitlab 社区版 (Gitlab CE) 都有哪些限制?

】Gitlab社区版(GitlabCE)都有哪些限制?【英文标题】:WhatarethelimitationsofGitlabCommunityEdition(GitlabCE)?Gitlab社区版(GitlabCE)有哪些限制?【发布时间】:2020-02-0512:05:52【问题描述】:我在Gitlab上阅读了这个比较https://about.gitlab.com/pricing/se... 查看详情

如何自定义 Gitlab LDAP 认证功能?

】如何自定义GitlabLDAP认证功能?【英文标题】:HowtocustomizeGitlabLDAPauthenticationfunction?【发布时间】:2019-07-0606:15:49【问题描述】:我想在我安装的Gitlab的LDAP认证函数的login函数中写一些日志。我在以下文件(第3行)中添加了所... 查看详情

gitlab集成ldap

出于公司账号太多的缘故,遂萌生了gitlab集成ldap的念头。ldap在此不做描述,推荐用docker镜像安装,简单了事。gitlab集成ldap比较简单只需修改gitlab配置文件:/etc/gitlab/gitlab.rb。。。。。(中间配置不动,此处省略)注意:uid:由... 查看详情

安装gitlab10.5.2社区版

1、准备操作系统CentOS72、安装gitlab#安装yuminstallcurlpolicycoreutilsopenssh-serveropenssh-clientspostfixcurl-sShttp://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh|sudobashEXTERNAL_URL="http://gitlab.d 查看详情

[zeppelin]支持多组ldaprealm登录(代码片段)

...了单个邮箱的Ldap验证,公司资源整合之后,需要支持多个邮箱Ldap验证,经研究发现,zeppelin使用的是shiro进行权限验证,shiro配置是支持多组Realm验证,配置上筛选器就可以。shiro多Realm配置解析z 查看详情

docker镜像安装gitlab中文社区版

dockerrun--detach--publish20443:443--publish20080:80--namegitlab--restartunless-stopped--volume~/gitlabdata/etc:/etc/gitlab--volume~/gitlabdata/log:/var/log/gitlab--volume~/gitlabdata/data:/var/opt/gi 查看详情

gitlab中文社区版docker镜像安装启动及配置

参考技术Ahttps://docs.gitlab.com/omnibus/docker/https://docs.gitlab.com/omnibus/settings/nginx.html#enable-httpshttps://gitlab.com/gitlab-org/gitlab-ce/issues?scope=all&utf8=%E2%9C%93&state=all 查看详情

使用私有化部署的gitlab社区版的风险

使用私有化部署的GitLab社区版的风险主要包括以下几点:1.安全风险:在私有化部署GitLab社区版时,需要自己负责服务器的安全管理工作,包括系统、应用程序和数据的安全管理。一旦服务器受到攻击或出现漏洞,可能会导致数... 查看详情

gitlab采用ad认证

1.Gitlab已经安装完毕2.配置Gitlab采用AD登录gitlab_rails[ldap_enabled]=truegitlab_rails[prevent_ldap_sign_in]=false###!**remembertoclosethisblockwithEOSbelow**gitlab_rails[ldap_servers]=YAML.load<<-EOS m 查看详情

gitlab服务部署及使用

一、什么是gitlib  Gitlab是一个基于Git实现的在线代码仓库托管软件,你可以用Gitlab自己搭建一个类似于Github一样的系统平台,一般搭建gitlab私服就是用在公司的内部  Gitlab功能就是能够对代码的提交审核和问题跟踪,这个对... 查看详情

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

...起作用(我稍后会解决这个问题)。上下文我在本地配置gitlab-ce 查看详情

gitlab加入ldap认证(代码片段)

...息易忘。所以加入集成LDAP统一认证,域控管理。这里对Gitlab应用系统结合LDAP认证,前提是企业内部已搭建好AD域服务。Gitlab配置LDAPGitlab已安装好,安装的CE版本。Gitlab配置LDAP服务要在配置文件中修改,无法像Jenkins加入LDAP那样... 查看详情

MYSql 社区版是不是支持 Nosql

】MYSql社区版是不是支持Nosql【英文标题】:DoesMYSqlCommunityeditionsupportNosqlMYSql社区版是否支持Nosql【发布时间】:2019-11-1709:00:35【问题描述】:我打算用Sql学习和构建一个Nodejs应用程序,我知道MySql企业版支持NoSql,但是社区版支... 查看详情

gitlab与ldap集成(代码片段)

背景:紧跟gitlab15.8onrocky8,准备将gitlab与ldap打通,后续jenkins也是。方便用户的统一管理,现在的用户管理都是单独的,用户的离职和管理很是麻烦,正好借这次条例流程尝试全部打通,统一管理一下!关于ldap的搭建可以参考:... 查看详情