专栏首页BigYoung小站Django-auth-ldap 配置方法

Django-auth-ldap 配置方法

使用场景

公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web登录认证系统时,就需要这个Django-auth-ldap第三方插件

插件介绍

Django-auth-ldap是一个Django身份验证后端,可以针对LDAP服务进行身份验证。有许多丰富的配置选项可用于处理用户,组和权限,便于对页面和后台的控制 插件介绍地址:Django-auth-ldap

安装方法

注意:需先正确安装python3环境、pip3 和 Django环境


前提: 需要先安装python-ldap > = 3.0 第一步:安装Django-auth-ldap

pip install django-auth-ldap

第二步:在setting.py中配置django-auth-ldap 模块

要在Django项目中使用auth认证,请将django_auth_ldap.backend.LDAPBackend添加 到AUTHENTICATION_BACKENDS。不要向INSTALLED_APPS添加任何内容。 添加完效果如下:

AUTHENTICATION_BACKENDS  =  [
  'django_auth_ldap.backend.LDAPBackend' ,]

第三步:在django项目的settings.py中配置如下代码:

#Django-auth-ldap 配置部分

import ldap
from django_auth_ldap.config import LDAPSearch,GroupOfNamesType
#修改Django认证先走ldap,再走本地认证

AUTHENTICATION_BACKENDS = [
   'django_auth_ldap.backend.LDAPBackend',
   'django.contrib.auth.backends.ModelBackend',
]
#ldap的连接基础配置
AUTH_LDAP_SERVER_URI = "ldap://xxx.xxx.xxx.xxx:389" # ldap or ad 服务器地址AUTH_LDAP_BIND_DN = "CN=administrator,CN=Users,DC=test,DC=com" # 管理员的dn路径AUTH_LDAP_BIND_PASSWORD = 'testpassword' # 管理员密码#允许认证用户的路径
AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=test,DC=test,DC=intra",
                                  ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
#通过组进行权限控制
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=groups,ou=test,dc=test,dc=intra",
   ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
#is_staff:这个组里的成员可以登录;is_superuser:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后台,但是无权限查看后台内容
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com",
    "is_superuser": "cn=test_users,ou=groups,OU=tset,DC=test,DC=com",
}#通过组进行权限控制end

#如果ldap服务器是Windows的AD,需要配置上如下选项

AUTH_LDAP_CONNECTION_OPTIONS = {
   ldap.OPT_DEBUG_LEVEL: 1,
   ldap.OPT_REFERRALS: 0,
}
#当ldap用户登录时,从ldap的用户属性对应写到django的user数据库,键为django的属性,值为ldap用户的属性

AUTH_LDAP_USER_ATTR_MAP = {
                            "first_name": "givenName",
                            "last_name": "sn",
                            "email": "mail"}
#如果为True,每次组成员都从ldap重新获取,保证组成员的实时性;反之会对组成员进行缓存,提升性能,但是降低实时性# AUTH_LDAP_FIND_GROUP_PERMS = True

以上配置完毕后,登录服务器后台地址:http://serverurl:8080/admin 使用ldap or ad中指定的group里的用户进行登录认证。

本文分享自微信公众号 - BigYoung小站(bigyoungs),作者:Young文人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows PowerShell 实战指南-动手实验-9.8

    Get-Hotfix 的 -ComputerName 获取管道类型是:String[],通过()传递过来的是类型也是String.所以该命令可以运行,并且结果正...

    BigYoung小站
  • Windows AD日志分析平台WatchAD安装教程

    WatchAD收集所有域控上的事件日志和kerberos流量,通过特征匹配、Kerberos协议分析、历史行为、敏感操作和蜜罐账户等方式来检测各种已知与未知威胁...

    BigYoung小站
  • logging还能这样用?

    大家在开发过程中,除了编写应有的项目代码,有时候需要记录相应的接口及数据操作记录。

    BigYoung小站
  • python 使用ldap实例

    py3study
  • Spring import配置文件使用占位符

    import使用占位符 连接池切换导入配置的代码: <import resource="classpath:META-INF/spring/spring-${d...

    Java技术栈
  • python+ldap实例

    首先需要安装python-ldap的模块 http://www.python-ldap.org/。 在这里用的是windows系统,当然比较容易,下载地址 ht...

    py3study
  • 李世石再次败北,人工智能势不可挡?

    港湾人儿
  • Android Studio你不知道的快捷键(一)

    一般来说键盘用的越多鼠标用的越少,那么写起代码来效率就越高;常见的快捷键想必大家都已经掌握,接下来我就分享一些你可能不知道的但确非常实用的快捷键。

    weishu
  • 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

    有的时候,配置信息是我们无法在开发过程中就能确定的。比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等。这时候,就需要把配...

    Happyjava
  • 世纪龙校招java开发一、二面 面经

    头一天做的笔试,涉及到计组基本知识,还有几道智力题、java部分很简单(真的很简单有点基础就划过了)

    用户6055494

扫码关注云+社区

领取腾讯云代金券