说明:

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了

SVN与LDAP服务器整合验证的更多相关文章

  1. centos 6.5 配置LDAP服务器+客户端!

    各种度娘!各种歌哥!网上教程参差不齐,历时1天,终于完成,不敢独享,遂,总结分享之,有问题可以留言,知无不言...开始吧 Note: 本次配置的服务器环境是<redhat enterprise ...

  2. 在Windows和UNIX下利用PHP和LDAP进行身份验证

    我现在的老板曾要求我为企业内部的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者L ...

  3. Windows 下搭建LDAP服务器

    五一闲来没事,加上项目正在进行UAT.抽空研究了一下LDAP相关知识.随手做一个记录. 为了方便阅读还是先介绍一下什么是LDAP? 前言.Lightweight Directory Access Pr ...

  4. Python实现LDAP用户名密码验证

    网上借鉴了不少东西,下面是python代码,备份后用. 思路,因为每个用户的组都不一样,这样就导致了dn不一致的情况, 据需要先根据用户名获取该用户的dn,然后再bind用户名和密码进行验证. 反正是 ...

  5. PHP连接LDAP进行登录验证

    基于安全性考虑,准备把PHP做的自动化平台加入ldap登录验证,具体做法如下: 了解背景: LDAP 的全称是"轻量级目录访问协议(Lightweight Directory Access ...

  6. Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块

    Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块 ...

  7. LDAP服务器的概念和原理简单介绍

    LDAP服务器的概念和原理简单介绍 1. 目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不 ...

  8. ldap服务器OpenLDAP安装使用

    OpenLDAP 是 LDAP 协议的一个开源实现.LDAP 服务器本质上是一个为只读访问而优化的非关系型数据库.它主要用做地址簿查询(如 email 客户端)或对各种服务访问做后台认证以及用户数据权 ...

  9. 【JMeter4.0学习(二)】之搭建openLDAP在windows8.1上的安装配置以及JMeter对LDAP服务器的性能测试脚本开发

    目录: 概述 安装测试环境 安装过程 配置启动 配置搭建OpenLDAP 给数据库添加数据 测试查询刚刚插入的数据 客户端介绍 JMeter建立一个扩展LDAP服务器的性能测试脚本开发 附:LDAP学 ...

随机推荐

  1. Linux搭建SQL server服务器

    我们知道在Linux下安装服务有很多方式,最为简单的也就是yum安装,但是很多服务通过yum是无法安装的,如果想使用yum安装,需要指定yum安装仓库,我们今天需要安装MSQL Server,所以需要 ...

  2. noip20

    T1 首先,这个插球,就是森林中连点,考虑dp,我们设 \(dp_{i,j}\) 表示有i个点的森林,有j个点在第一颗树中的概率,转移时考虑第i个点是否在第一颗子树里,转移方程: \[dp_{i,j} ...

  3. 题解 UVA10225 Discrete Logging

    本题是一道 \(BSGS\) 裸题,用于求解高次同余方程,形如 \(a^x\equiv b(\mod p)\),其中 \(a\),\(p\) 互质(不互质还有 \(EXBSGS\)). 建议多使用 \ ...

  4. 从350ms到80ms,揭秘阿里工程师 iOS 短视频优化方案

    内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性.增加用户停留时长的一把利器.短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以 ...

  5. spring cloud 的hystrix 熔断器 和feign 调用的使用

    1, 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId&g ...

  6. C++ 计算MD5

    头文件: #pragma once #ifndef MD5_H #define MD5_H #include <string> #include <fstream> /* Ty ...

  7. Navicat查询出的数据有时候不能更改?

    Navicate查出数据只读,一种情况是查询没带出主键(唯一索引),无法更新数据

  8. Springboot使用MatrixVariable 注解

        根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对.规范中没对对应的术语.一般 "URL 路径参数" 可以被应用,尽管更加独特的 &qu ...

  9. linux centos 设置笔记本合盖不待机

    1.设置笔记本合盖不待机 打开配置文件 vi /etc/systemd/logind.conf 将 HandleLidSwitch 变量前的注释 # 去掉 修改 HandleLidSwitch 变量参 ...

  10. SpringBoot博客开发之异常处理

    异常处理: 背景: 最近在搭建属于自己的个人博客(码农小白的执念),自己搭建后端的时候首先考虑的是异常处理.个人也是一边学习一边做,难免有疏漏的地方,希望朋友们在不对的地方提醒下. 技术栈: spri ...