Django项目中添加ldap登陆认证功能的实现
1.Django入门(一)2.Centos7 离线安装python3 Django3.'staticfiles' is not a registered tag library. Must be one of:4.bootstrap模板5.django报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.16.django模板7.Django 2.1.7 视图 - 自定义404错误、500错误8.Django 2.1.7 Admin - 注册模型、自定义显示列表字段9.django 发送邮件正文表格模板10.django 定时任务第三方库apscheduler11.Django内置发送邮件功能 12.Django Models 多条件查询 以及Q/F查询
13.Django项目中添加ldap登陆认证功能的实现
14.django分页15.xterm + react + antd pro 小坑记录16.django中文网17.Django自动生成Swagger接口文档18.Django 2.1.7 项目技巧 - 创建apps应用目录归纳所有应用setting配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # settings配置 import ldap from django_auth_ldap.config import LDAPSearch AUTHENTICATION_BACKENDS = ( # 配置为先使用LDAP认证,如通过认证则不再使用后面的 'django_auth_ldap.backend.LDAPBackend' , # 本地用户验证,如果不需要的,可以注释掉 # 'django.contrib.auth.backends.ModelBackend', ) base_dn = 'dc=xxx,dc=xxx,dc=com' # ldap的域名信息(例如baidu.com,可以拆分为baidu跟com) AUTH_LDAP_SERVER_URI = 'ldap://xxx.xxx.com:389' # ldap服务器地址及端口 AUTH_LDAP_BIND_DN = 'CN=app dzkfyw001,OU=AppUsers,DC=xxx,DC=xxx,DC=com' # 用户名,可以使用自己的用户名,用户名后面要加上域名 AUTH_LDAP_BIND_PASSWORD = 'xxx' # 对应用户名的密码 # LDAPSearch # 参数1:搜索的用户信息,ou是组织,后面格式化输出的是你的用户名信息, # 参数2:默认,参数3:搜索的用户,我使用的user,有的公司是uid,如果不知道,可以尝试下 #默认不加ou就是默认搜索所有ou AUTH_LDAP_USER_SEARCH = LDAPSearch( '%s' % base_dn, ldap.SCOPE_SUBTREE, "(SamAccountName=%(user)s)" ) AUTH_LDAP_ALWAYS_UPDATE_USER = True # 如果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" } |
view.py认证:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def login(request): if request.method = = 'POST' : username = request.POST.get( 'username' , None ) password = request.POST.get( 'password' , None ) # 先验证ldap账户,如果不存在,则会验证本地用户 ldap_user = authenticate(username = username, password = password) # 验证通过后,可以看到,本地auth_user表中,会自动添加一条同步的用户信息 print ( "ldap_user: " ,ldap_user) if ldap_user is not None : auth.login(request, ldap_user) request.session[ 'user' ] = username return HttpResponseRedirect(reverse( "index" ), { 'user' : ldap_user}) else : return render(request, 'login.html' , { "error" : "用户或密码错误" }) else : return render(request, 'login.html' ) |
LDAP Admin工具:http://www.xitongzhijia.net/soft/208026.html
ldap:
baseDn: DC=xxx,DC=xxx,DC=com
userDn: CN=xxx,OU=PubUsers,DC=xxx,DC=xxx,DC=com
https://blog.csdn.net/weixin_45707730/article/details/113751420
https://blog.csdn.net/weixin_45707730/article/details/113751420
https://www.jb51.net/article/159089.htm
https://www.qb5200.com/article/338636.html
https://www.cnblogs.com/XiaoYang-sir/articles/14931665.html
Django权限系统auth模块详解:https://blog.csdn.net/qq_44907926/article/details/120213864
本文作者:香菜哥哥
本文链接:https://www.cnblogs.com/yizhipanghu/p/16066453.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步