zoukankan      html  css  js  c++  java
  • 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了


  • 相关阅读:
    前端
    wampserver无法进入到phpmyadmin
    wordpress搭载wampserver上的问题
    电脑不显示网络信号,却能连上网
    读书TODO
    秒杀活动,怎么设计全套技术方案
    淘宝返利知识普及
    如何给变量命名
    一段SQL代码的压缩:从974行到96行,十倍压缩
    nginx一致性hash及应用场景。
  • 原文地址:https://www.cnblogs.com/cy0917/p/10178727.html
Copyright © 2011-2022 走看看