一、前言
LDAP是Light weight Directory Access Protocol(轻量级目录访问协议)的缩写,其前身是更为古老的DAP协议。
通常公司员需要记住很多密码,管理这些密码是一件让人感觉十分麻烦的事情。LDAP协议就是解决这样问题的一个
统一认证标准协议(LDAP的服务原理请查看参考文档1)。该篇文章简单的介绍OpenLDAP的安装和配置和GitLab(高
版本才支持,过低的版本请升级)添加对LDAP认证的支持。该文章的亮点(也是写这篇文章的主要目的)是解决了
OpenLDAP(我使用的版本号为2.4.*)加载memberof模块,并通过groupOfNames和memberOf实现分组认证的功能。
二、OpenLDAP安装
我的Linux系统为Centos6.7(64位)系统,具体安装步骤请查看参考文档2。
三、实现OpenLDAP的memberOf功能
1、在/etc/openldap目录下新建文件memberof_load_configure.ldif。内容如下:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulepath: /usr/lib64/openldap
olcModuleload: {0}memberof.la
dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
说明:上面的参数请根据实际情况修改(比如32的系统的话olcModulepath为/usr/lib/openldap)。该处灵感来源参考文档3。
2、执行命令sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。该处命令来源
参考文档4。
3、删除步骤二OpenLDAP安装创建的测试数据(如果已经创建),重新用inetOrgPerson创建用户信息(在“创建
新条目”下的“默认”中的ObjectClasses查找)和用groupOfNames创建组信息(位置同上,不过这里创建组不能
选择groupOfUniqueNames类型,二者区别可以查看参考文档6)。本人的重新配置之后的目录如下图:
4、用命令ldapsearch -x -LLL -H ldap:/// -b cn=test,ou=users,ou=***,dc=ldap,dc=live-in,dc=org dn
memberof进行测试,如果输入如下内容表示配置成功。
四、GitLab集成LDAP认证
1、修改GitLab配置文件/etc/gitlab/gitlab.rb找到gitlab_rails['ldap_enabled']位置做如下图配置就行
了。具体设置请查看参考文档5。
说明:base属性执行所有员工,user_filter属性主要用来实现分组功能。上面的配置是只有ldap中的gitlab分组中
的用户可以登录GitLab。
2、执行sudo gitlab-ctl reconfigure命令重新加载GitLab配置;
3、重启GitLab服务
##关闭命令如下
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
##启动命令如下
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start nginx
参考文档:
1、http://czmmiao.iteye.com/blog/1561597 LDAP服务原理详解(原创);
2、http://www.live-in.org/archives/1731.html CentOS Linux安装OpenLDAP服务器;
3、https://forums.opensuse.org/showthread.php/425183-OpenLDAP-2-4-Overlays-Missing Thread: OpenLDAP 2.4 - Overlays Missing?
4、https://technicalnotes.wordpress.com/2014/04/19/openldap-setup-with-memberof-overlay/ openldap setup with memberof overlay;
5、https://docs.gitlab.com/ee/administration/auth/ldap.html;
6、http://www.openldap.org/lists/openldap-software/200308/msg00073.html RE: *answer?* groupOfNames vs groupOfUniqueNames。