centos7 svn集成ldap用户认证

概述

    前面,我记录了一下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

 

 

正文

一  svn直接通过svn端口直接访问的,通过sasl实现ldap的认证。

 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 打开即可

centos7 svn集成ldap用户认证_第1张图片

启用ldap认证后,原本的用户密码配置文件passwd的就会失效,但是权限控制依然是在authz文件中进行配置,这里我就直接用最简单的配置所有人可读写:

 

4. 完成并测试

修改完配置后,需要重启所有服务,才能生效。重启svn和saslauthd。然后就可以通过自己本机的svn客户端用ldap用户直接进行登录了。具体的自行测试登录即可。

ok,到此,svn基于sasl的ldap集成就完成了。

 

 

 

二  在apache上集成ldap来实现svn的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。有什么不明白的,欢迎留言。

 

 

你可能感兴趣的:(Centos7系列)