欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解Django-auth-ldap 配置方法

程序员文章站 2023-09-04 11:52:28
使用场景 公司内部使用django作为后端服务框架的web服务,当需要使用公司内部搭建的ldap 或者 windows 的ad服务器作为web登录认证系统时,就需要这个d...

使用场景

公司内部使用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里的用户进行登录认证。希望对大家的学习有所帮助,也希望大家多多支持。