前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LDAP落地实战(二):SVN集成OpenLDAP认证

LDAP落地实战(二):SVN集成OpenLDAP认证

作者头像
37丫37
修改2019-06-19 13:57:07
2.4K0
修改2019-06-19 13:57:07
举报
文章被收录于专栏:运维咖啡吧运维咖啡吧

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

SVN集成OpenLDAP认证

  • 系统环境:Debian8.4
  • svn部署环境:Apache2.4 + Subversion
  1. Apache开启LDAP相关模块
代码语言:javascript
复制
# 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的支
代码语言:javascript
复制
<Virtualhost *:8088>
    DocumentRoot /home/svn/repos/
    ServerName svn.domain.com

    <Location /ne/>
        DAV svn
        SVNListParentPath on
        SVNParentPath "/home/svn/repos"

        AuthType Basic
        AuthName "Private 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 "CzfdX629K7"

        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)和密码进行登陆验证

参考文档

  • http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
  • https://www.cnblogs.com/livepencil/archive/2010/06/15/1758706.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维咖啡吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SVN集成OpenLDAP认证
    • 主要LDAP配置文件详解:
    • LDAP服务器认证过程
    • 参考文档
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档