前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django项目如何接入公司LDAP帐号认证

Django项目如何接入公司LDAP帐号认证

作者头像
测试开发技术
发布2020-01-17 17:01:03
3K0
发布2020-01-17 17:01:03
举报
文章被收录于专栏:测试开发技术测试开发技术

点击上方“公众号”可以订阅哦!

一、前言

Django项目开发过程中,为了保证安全性,通常都会接入用户帐号认证权限功能,而标题中LDAP是什么呢?当然这个不是本文介绍的重点,简单来说,LDAP是一种目录管理协议,通常公司用于存储员工的计算机登录帐号密码信息用的,而如果Django项目接入LDAP后,相当于登录Django站点时,可以不用再额外为使用该站点的用户去重新注册添加用户,使用者可以直接用各自的计算机登录帐号、密码登录即可。 如果想接入LDAP,前提是你们公司有LDAP服务器,当然我相信一般公司都会有,好了,闲话不说了,直接进入主题。

二、环境准备

1、安装python-ldap、django-auth-ldap

模块版本及下载地址,博主亲测有效! python-ldap 2.4.12 https://pypi.python.org/pypi/python-ldap/2.4.12 django-auth-ldap 1.1.4 https://pypi.python.org/pypi/django-auth-ldap/1.1.4

或直接在线安装

代码语言:javascript
复制
pip install python-ldap -i https://pypi.douban.com/simple
代码语言:javascript
复制
pip install  install django-auth-ldap -i http://pypi.douban.com/simple

三、 配置

1、setting.py配置

安装完成后,打开django项目中settings.py文件,增加ldap配置如下:

##ldap认证接入

AUTH_LDAP_SERVER_URI = 'ldap://ip:port' #ldap服务地址、端口

# AUTH_LDAP_BIND_DN = 'uid=username,ou=xx1,dc=xx2,dc=com'

# AUTH_LDAP_BIND_PASSWORD = "

AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=xx1,dc=xx2,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

AUTH_LDAP_ALWAYS_UPDATE_USER = True

AUTH_LDAP_USER_ATTR_MAP = {

"first_name": "givenName",

"last_name": "sn",

"email": "mail"

}

AUTH_USER_MODEL = 'UserManage.Account'

AUTHENTICATION_BACKENDS = (

'django_auth_ldap.backend.LDAPBackend', # ldap认证

'UserManage.auth.UsernamePasswordAuth', ## 本地自定义model的认证方式

)

注意事项:

1、实际接入ldap中,最关键的几个参数,ldap服务器地址、端口号、ou、dc等几个值,可从公司运维部获取得知。 2、实际接入ldap中,AUTH_LDAP_BIND_DN、 AUTH_LDAP_BIND_PASSWORD 可不用配置。 3、上述配置中,博主将ou、dc替换成xx1、xx2,实际使用更改成对应值即中。

四、简要流程

登录时,在默认的django数据库帐号验证之前,会先到LDAP服务器上去验证。 输入的登录帐号到LDAP服务器验证之前,会先用配置文件中的绑定DN、密码去验证,验证通过才能继续用输入的帐号密码去LDAP服务器验证。 若LDAP验证通过,会检查django数据库中是否已存在该帐号,若不存在,则会根据LDAP验证通过后获取的用户信息,来创建django数据库的用户账号。帐号名和输入的一样,密码则会设为一个无效的密码(看了下源码是”!”,无法合法哈希编码),因为该帐号密码验证是从LDAP上进行,所以django中的密码不会被使用到。除了默认的用户姓名、邮件等信息,若要把Group信息也同步过来的话需要进行相应的配置。 若LDAP验证失败,则会使用Django数据库的默认登录验证。

欢迎关注订阅

每日一篇!

公众号:mikezhou_talk

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发技术 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档