前面,我记录了一下openldap的搭建,搭建过后,这里记录一下,如何将ldap的认证,集成到svn中。集成的办法,目前是有两种:
1. svn直接通过svn端口直接访问的,通过sasl实现ldap的认证。
2. svn通过apache进行http访问的用户,通过配置apache,在apache上集成ldap来实现svn的ldap认证集成。
这里根据这两种情况,分别记录说明,如何集成ldap到svn中
环境:
centos7
openldap 2.4.44
svn 1.7.14-14
1. 安装相关依赖包
yum install -y *sasl*
查看saslauthd 版本:
2. 修改配置文件,启动sasl服务
vim /etc/sysconfig/saslauthd
--------------------------------------------------------
MECH=ldap # 只修改这一行,改为ldap
--------------------------------------------------------
vim /etc/saslauthd.conf # 不存在则新建
------------------------------------------------------------------------------
ldap_servers: ldap://172.18.73.129
ldap_bind_dn: cn=admin,dc=yaobili,dc=com
ldap_bind_pw: yourpassword
ldap_search_base: ou=People,dc=yaobili,dc=com # 查询的根组织节点,这样就是只在people这个ou下查询用户
ldap_filter: uid=%U
ldap_password_attr: userPassword # ldap中表示密码的属性名,默认是用这个就可以了。
------------------------------------------------------------------------------
vim /etc/sasl2/svn.conf # 没有就新建,内容如下
--------------------------------------------
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
--------------------------------------------
# 启动服务
systemctl start saslauthd
systemctl enable saslauthd
启动服务后,通过一下方式测试是否可以成功验证:
testsaslauthd -u 用户名 -p 密码
3. 修改svn库配置
通过svnadmin创建的svn库,在conf下都会有一个配置文件svnserver.conf,修改此配置文件,将use-sasl=true 打开即可
启用ldap认证后,原本的用户密码配置文件passwd的就会失效,但是权限控制依然是在authz文件中进行配置,这里我就直接用最简单的配置所有人可读写:
4. 完成并测试
修改完配置后,需要重启所有服务,才能生效。重启svn和saslauthd。然后就可以通过自己本机的svn客户端用ldap用户直接进行登录了。具体的自行测试登录即可。
ok,到此,svn基于sasl的ldap集成就完成了。
第二种方式,则是svn通过apache进行代理http访问的情况下,在这种情况下,svn的访问是通过http,然后经过apache来认证的,所以只需要在apache上集成ldap的认证即可实现svn的ldap认证。
1. 安装依赖服务
yum -y install mod_dav_svn
2. 修改配置
如果已经部署过apache+svn的朋友,则直接修改subversion.conf配置即可:
vim /etc/httpd/conf.d/subversion.conf
--------------------------------------------------------------------------------
# 这里配置的是访问地址,也就是访问时需要在地址后加上svn然后再加库名
DAV svn
SVNParentPath /data/svn # 这是svn库的主目录
SVNListParentPath on
AuthzSVNAccessFile /data/svn/authz
AuthName "Subversion repository"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://172.18.196.238:389/ ou=people,dc=yaobili,dc=com?uid?sub?(objectclass=*)" #根据设定组织自行修改
AuthLDAPBindDN "cn=admin,dc=yaobili,dc=com" #根据设定用户自行修改
AuthLDAPBindPassword "yourpassword" #根据设定用户密码自行修改
Require ldap-user
--------------------------------------------------------------------------------
其中/data/svn 为svn库文件目录,在/data/svn下创建的svn库,即 svnserve -d -r /data/svn 为svn启动的命令。
用了apache做验证后,原先每个库中的conf/passwd文件就不生效了,而是使用指定的 AuthUserFile 来指定。而改为ldap后,则由ldap进行认证,但是授权文件则是由 AuthzSVNAccessFile 指定的授权文件来进行设置。这些在配置apache+svn时应该都已经设置过了。
配置方法,通过指定svn库名来设置权限,下面是最简单的所有人读写的类似设置:
[repo1:/]
* = rw
[repo2:/]
* = rw
3. 重启服务生效
# 配置完成后,重启apache服务生效
systemctl restart httpd
ok,到此就配置完成了,直接使用svn客户端用ldap用户连接svn进行测试即可。
ok,到此就结束了,这里没有细说apache+svn的配置方法,主要是讲了apache+svn后,如果再加ldap。有什么不明白的,欢迎留言。