ldap落地实战:svn集成ldap认证

简介: 上一篇文章我们介绍了LDAP的部署以及管理维护,那么如何接入LDAP实现账号统一认证呢?这篇文章将带你完成svn的接入验证subversion集成openldap认证系统环境:debian8.

上一篇文章我们介绍了LDAP的部署以及管理维护,那么如何接入LDAP实现账号统一认证呢?这篇文章将带你完成svn的接入验证

subversion集成openldap认证

  • 系统环境:debian8.4
  • svn部署环境:apache2.4 + subversion
  1. apache开启ldap相关模块
# a2enmod ldap
Enabling module ldap.
To activate the new configuration, you need to run:
  service apache2 restart
# a2enmod authnz_ldap
Considering dependency ldap for authnz_ldap:
Module ldap already enabled
Enabling module authnz_ldap.
To activate the new configuration, you need to run:
  service apache2 restart
  1. 修改vhost配置文件,添加对ldap的支持
<Virtualhost *:8088>
    DocumentRoot /home/svn/repos/
    ServerName svn.domain.com
    
    <Location /ne/>
        DAV svn
        SVNListParentPath on
        SVNParentPath "/home/svn/repos"

        AuthType Basic
        AuthName "Subversion Repository"
        
        #AuthUserFile "/etc/subversion/dav_svn.passwd"
        AuthzSVNAccessFile "/etc/subversion/dav_svn.authz"

        # use LDAP auth
        AuthBasicProvider ldap
        AuthLDAPBindAuthoritative on
        AuthLDAPURL "ldap://ldap.domain.com/dc=domain,dc=com?uid?sub?(objectclass=*)"
        AuthLDAPBindDN "uid=authz,ou=Public,dc=domain,dc=com"
        AuthLDAPBindPassword "AzdfD863M4"

        Require ldap-user
        
    </Location>
</Virtualhost>

主要LDAP配置文件详解:

  • AuthType:验证类型,Basic使用账号密码验证
  • AuthName:提示字符串
  • AuthBasicProvider:使用ldap验证
  • AuthLDAPBindAuthoritative:on表示只要求验证ldap用户,别的不认,off则可以使用svn的账号和ldap混合账号登录
    • apache2.2中配置是AuthzLDAPAuthoritative,到2.4中改为了AuthLDAPBindAuthoritative
    • 但在实际应用中发现并么有什么用,设置为off后ldap认证失败也不会去找AuthzSVNAccessFile,或许是我姿势不对,有知道原因的烦请告知
  • Require:ldap-user或valid-user
  • AuthLDAPURL | AuthLDAPBindDN | AuthLDAPBindPassword: 用于查找用户的账号密码,一般设置个只读账号即可
    • AuthLDAPURL:[协议名称]://[ip地址或者域名]:[端口号]/[baseDN]?[attr]?[scope]?[filter]
      • baseDN:指定开始搜索的节点的名称
      • attr:就是用户输入的属性键,默认是“uid”
      • scope: one,sub,base,默认是sub
      • filter:过滤器,默认是objectclass=*

LDAP服务器认证过程

可能只看配置文件不能了解LDAP认证的原理,接下来我们详细讨论下LDAP是如何认证的

客户端(httpd)使用提供的URL(AuthLDAPURL)进行验证的时候,并不是直接验证输入的账号密码,因为LDAP服务器在验证的时候要使用DN(每个节点用户的唯一标识)和密码来进行登陆验证的,但是DN一般来说比较长,诸如:“cn=xxx,ou=xxx,ou=xxx,dc=xxx,dc=xxx”,这种光输入的时候就烦气了,所以要想使用简短的用户名来登陆的时候,一般的做法是在某个节点用户上添加一个属性,比如mobile(手机号),Email(邮箱),user name或者uid(用户名),然后使用这个属性的值来登陆(大部分情况下都用uid,我们也是这么使用的)。

当用户输入这个属性值(一般uid)和密码的时候,客户端(httpd服务器)先使用AuthLDAPBindDN和AuthLDAPBindPassword作为用户名和密码登陆,根据AuthLDAPURL指定的查询规则来查找用户输入的属性的值有没有,如果查找的条数为0或者大于1,则返回错误,如果查找的条数等于1,则使用查找到的这个条目的DN和用户输入的密码进行登陆验证,成功则成功,失败则失败。

总结一下LDAP的认证过程分为两部:

  1. 搜索用户是否存在LDAP服务器中:配置文件中配置的AuthLDAPBindDN和AuthLDAPBindPassword两个属性主要目的就是为了登陆LDAP服务器搜索属性(uid)是否只有一条,如果服务器允许匿名访问则这两个配置可以不需要,但一般为了安全性都会关闭LDAP的匿名访问,新建一个只读权限的账号配置到这里即可
  2. 使用用户输入的属性值(uid)和密码进行登陆验证

参考文档

扫码关注公众号查看更多实用文章

目录
相关文章
|
18天前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
28 2
zabbix agent集成percona监控MySQL的插件实战案例
|
17天前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
1月前
|
前端开发 关系型数据库 测试技术
django集成pytest进行自动化单元测试实战
在Django项目中集成Pytest进行单元测试可以提高测试的灵活性和效率,相比于Django自带的测试框架,Pytest提供了更为丰富和强大的测试功能。本文通过一个实际项目ishareblog介绍django集成pytest进行自动化单元测试实战。
26 3
django集成pytest进行自动化单元测试实战
|
1月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
97 1
|
1月前
|
Cloud Native 关系型数据库 大数据
定川信息「川立方数治平台」通过PolarDB产品生态集成认证!
杭州定川信息技术有限公司「川立方数据治理一体化智能平台」通过PolarDB产品生态集成认证!
|
1月前
|
jenkins Java 持续交付
【一键搞定!】Jenkins 自动发布 Java 代码的神奇之旅 —— 从零到英雄的持续集成/部署实战秘籍!
【8月更文挑战第9天】随着软件开发自动化的发展,持续集成(CI)与持续部署(CD)已成为现代流程的核心。Jenkins 作为一款灵活且功能丰富的开源 CI/CD 工具,在业界应用广泛。以一家电商公司的 Java 后端服务为例,通过搭建 Jenkins 自动化发布流程,包括创建 Jenkins 项目、配置 Git 仓库、设置构建触发器以及编写构建脚本等步骤,可以实现代码的快速可靠部署。
52 2
|
20天前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
68 0
|
23天前
|
jenkins 持续交付
jenkins学习笔记之九:jenkins认证集成github
jenkins学习笔记之九:jenkins认证集成github
|
23天前
|
安全 jenkins 持续交付
jenkins学习笔记之八:jenkins认证集成gitlab
jenkins学习笔记之八:jenkins认证集成gitlab
|
23天前
|
jenkins Devops 持续交付
jenkins学习笔记之七:jenkins集成LDAP用户认证
jenkins学习笔记之七:jenkins集成LDAP用户认证