美文网首页Python小哥哥
python3 使用ldap3来作为django认证后台

python3 使用ldap3来作为django认证后台

作者: 我爱学python | 来源:发表于2019-04-20 17:18 被阅读6次

    首先先使用ldap3测试ldap服务是否正常

    我们先要拿到dc的数据,以及连接ldap的密码,还有搜索的字段(search_filter), 一般来说search_filter 这个是从负责ldap运维的同事获取的。attributes 这个是获取哪些字段的数据,犹如mysql 语句的select xx,xxx , 如果吧attributes设置为ALL_ATTRIBUTES,那么就是获取所有字段数据。

    如果res返回的是非false,而是一堆ldap数据,那么就说明ldap连接是正常的,那么下面开始使用ldap3联合django做认证吧

    如果上述步骤没有错误的话,那么请走下面这一步

    如果上面也是没有问题的话,那么就可以配置django+ldap认证了

    python3 django ldap认证

    咱们使用django-python3-ldap,所以按照安装配置启动三步走的方法来。

    1.安装django-python3-ldap模块

    pipinstalldjango-python3-ldap

    2.配置

    django-python3-ldap 模块 配置方法可以看下官网,官网

    3.修改django_python3_ldap.ldap的代码。

    这一步我自己反复测试,发现这个包发给ldap-server的数据格式不对,导致ldap-server返回的就是invalidCredentials,所以我们需要修改它的代码,使其符合ldap-server要求的数据格式,这个怎么修改就看自己的需求了,没有标准答案。

    修改的代码相对路径是 安装django_python3_ldap的lib路径/django_python3_ldap/ldap ,例如我的是在 /usr/local/python356/lib/python3.5/site-packages/django_python3_ldap/ldap.py,在 connection 的方法里面 ,在148行开始

    username = username.replace("sn","cn")# 自己添加的代码

    然后在183行注释掉源代码,添加自己的代码

    之所以需要注释掉上面的代码,是因为rebind是借助已有的连接再次认证下,这次认证的是我们在settings配置的用户名密码,由于我司运维同时给的ldap连接信息里没有CONNECTION_USERNAME,所以总是认证通过不了,所以我这里就需要注释了。

    然后重启djanog,发现就能认证成功了。

    相关文章

      网友评论

        本文标题:python3 使用ldap3来作为django认证后台

        本文链接:https://www.haomeiwen.com/subject/dsylgqtx.html