SVN与LDAP服务器整合验证
说明:
svn的访问是以svn://协议访问的,一般都是用http协议访问,所以要使用apache的httpd服务器
apache已经添加了对ldap服务器的支持,所以svn的认证过程是使用apache代理OpenLDAP来完成的
svn的权限控制还是要放在其svn服务上(authz文件)
2.安装Subversion服务
yum -y install subversion
3.安装httpd对LDAP服务的支持
yum -y install mod_dav_svn
4.配置subversion.conf
找到apache服务器的安装路径,一般在/etc/httpd/下,在conf.d目录下有一个subversion.conf文件(没有的话请自行创建),打开它,先上我的配置:
<Location /opt/svn> DAV svn SVNParentPath /opt/svn SVNListParentPath on AuthzSVNAccessFile /opt/svn/authz AuthName "Subversion repository" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL "ldap://192.168.133.130:389/ ou=people,dc=example,dc=com?uid?sub?(objectclass=*)" #根据设定组织自行修改 AuthLDAPBindDN "cn=manage,dc=example,dc=com" #根据设定用户自行修改 AuthLDAPBindPassword "admin" #根据设定用户密码自行修改 Require ldap-user </Location>
AuthName:写死就行
AuthType:验证类型,Basic使用账号密码验证
AuthBasicProvider:ldap写死不解释
AuthzLDAPAuthoritative:这个搭配最下面“Require ldap-user”使用,on表示只要求验证ldap用户,别的不认;off则可以使用svn的账号和ldap混合账号登陆
Require:ldap-user或者valid-user,你要是只用ldap账号登陆的话就填写第一个
在解释AuthLDAPURL|AuthLDAPBindDN|AuthLDAPBindPassword的时候要先讲一下LDAP服务器认证过程,方便理解:
客户端(httpd)使用提供的URL(AuthLDAPURL)进行验证的时候,并不是直接验证输入的账 号密码,因为LDAP服务器在验证的时候要使用DN(每个节点用户的唯一标识)和密码来进行登陆验证的,但是DN一般来说比较长,诸如:“cn=xxx,ou=xxx,ou=xxx,dc=xxx,dc=xxx”,这种光输入的时候就烦气了,所以要想使用简短的用户名来登陆的时候,一般的做法是在某个节点用户上添加一个属性,比如mobile(手机号),Email(邮箱),user name或者uid(用户名),然后使用这个属性的值来登陆。
当用户输入这个属性值和密码的时候,客户端(httpd服务器)先使用AuthLDAPBindDN和AuthLDAPBindPassword作为用户名和密码登陆,根据AuthLDAPURL指定的查询规则(AuthLDAPURL的查询规则一会再说)来查找用户输入的属性的值有没有,如果查找的条数为0或者大于1,则返回错误,如果查找的条数等于1,则使用查找到的这个条目的DN和用户输入的密码进行登陆验证,成功则成功,失败则失败,这就是OpenLDAP的验证过程。
AuthLDAPBindDN|AuthLDAPBindPassword:就是用于查找用户的账号密码了,一般设定一个用友只读权限的账号就行
AuthLDAPURL:
对应上面那个url:[协议名称]://[ip地址或者域名]:[端口号]/[baseDN]?[attr]?[scope]?[filter]
baseDN:指定开始搜索节点的名称
attr:就是用户输入的属性键,默认是"uid",我使用的是uid,还可以使用cn,mobile,Email等。。。
scope:one,sub,base三者之一,默认sub
filter:过滤器,默认(objectclass=*)
配置完了之后重启服务
5.现装svn的小伙伴还需要配置一个库,没库看啥效果,本来就有库的就可以看效果了
1)创建svn版本库目录
随便建地方,不过要跟上面配置文件中的SVNParentPath值一致:
mkdir /opt/svn
2)启动svn服务
svnserve -d -r /opt/svn
3)创建一个svn版本库,要去/opt/svn下执行啊
svnadmin create Test
4)授权,不然web会有errorlog
chown apache.apache -R /opt/svn
5)创建权限管理文件
vim /opt/svn/authz
[groups]
admin=xxx
users=yyy,zzz
[/]
@admin = rw
[Test:/]
@users = r
这里的xxx,yyy,zzz是只用户输入的属性的值(LDAP服务器中某个用于登陆的节点的属性值),如果你没配置这里的权限,用户虽然登陆成功了,但是没有相应的权限页面会提示没权限查看的,users后面跟多个以","分割的用户名(你设置的查询规则按什么查询就是什么)
接下里可以在openldap中建立用户 并连接svn了