Ldap结构
软件 | 版本 |
---|---|
httpd | 2.4.6 |
Subversion | 1.7.14 |
OpenLDAP | 2.4.44 |
操作系统 | CentOS7.6.1810 |
特别注意httpd版本,因httpd版本差异,踩过一些坑。
安装cyrus-sasl(可选)
在这里主要用于远程测试Ldap用户是否可用。
安装
yum install cyrus-sasl -y
编辑配置文件
配置文件默认是不存在的
vim /etc/saslauthd.conf
ldap_servers: ldap://10.250.220.53/
ldap_bind_dn: cn=admin,dc=cesresearch,dc=com
ldap_bind_pw: 123456
ldap_search_base: ou=People,dc=cesresearch,dc=com
ldap_filter: uid=%U
ldap_password_attr: userPassword
修改认证方式
默认为pam
,可选pam
、shadow
(验证系统用户)和ldap
等,这里修改为ldap
。
sed -i 's/MECH=pam/MECH=ldap/g' /etc/sysconfig/saslauthd
启动saslauthd服务
systemctl enable saslauthd --now
验证ldap中的用户
# testsaslauthd -u admin -p admin
0: OK "Success." // 验证成功
0: NO "authentication failed" //验证失败
当验证通过后,就可以配置与SVN的集成了。
配置与LDAP服务器的集成
安装依赖
yum install mod_ldap -y
更新配置文件
vim /etc/httpd/conf.d/subversion.conf
添加下面的内容
# LoadModule dav_svn_module modules/mod_dav_svn.so
# LoadModule authz_svn_module modules/mod_authz_svn.so
# 在早期的Httpd版本,需要配置需要加载的模块,当前版本不需要
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /data/svn
AuthType Basic
AuthName "Authorization"
AuthUserFile /data/svn/passwd.conf
AuthzSVNAccessFile /data/svn/authz.conf
Satisfy all
Require valid-user
# 定义验证方式,这里同时使用ldap和file的方式,当ldap找不到的用户,会使用file中的用户进行验证。
AuthBasicProvider file
# 在早期版本中还会有这个参数,用于设置是否仅使用ldap的方式进行验证用户信息,默认是on,这个版本不需要
#AuthzLDAPAuthoritative off
# 绑定LDAP的DN
AuthLDAPBindDN "cn=admin,dc=cesresearch,dc=com"
# 配置LDAP的管理员密码
AuthLDAPBindPassword "123456"
#搭建的LDAP url地址
AuthLDAPURL "ldap://10.250.220.53:389/ou=People,dc=cesresearch,dc=com?uid?sub? (objectClass=*)"
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Location>
重启Httpd服务
systemctl restart httpd
最后注意分别测试一下使用
ldap
和本地的/data/svn/passwd.conf
中的用户测试一下权限;ldap不能提供组的管理功能,需要手动配置用户相应版本库的目录访问权限。