1.前言
本文旨在介绍:在已完成django认证权限的基础上添加ldap。
2.回顾已完成的权限
网上有很多教程,这里不再细讲了。它包括两部分:
中间件实现
用到了django的2个表
- django.contrib.auth.models 对应表:auth_user
- django.contrib.sessions.models 对应表:django_session
3. 添加第三方认证ldap
写在开始之前:当enable ldap,如果用ldap账号首次登录会在auth_user创建一条记录
3.1 安装依赖包
1. python-ldap(windows环境请用whl按照) 2. django-auth-ldap //如果出现python-ldap fatal error: lber.h: No such file or directory sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev sudo yum install python-devel openldap-devel
3.2 校验
在开始之前,先用python校验下拿到的ldap配置参数是否正常
import ldap conn = ldap.initialize("ldap:port") res = conn.simple_bind_s('cn=test,dc=com,dc=cn', "test") print(res) searchScope = ldap.SCOPE_SUBTREE searchFilter = 'cn=test1' base_dn = 'ou=Test,dc=com,dc=cn' print(conn.search_s(base_dn, searchScope, searchFilter, None))
3.3 配置到django setting
import ldap from django_auth_ldap.config import LDAPSearch # 找公司IT提供ldap配置 AUTH_LDAP_SERVER_URI = "" AUTH_LDAP_BIND_DN = "cn=test,dc=com,dc=cn" AUTH_LDAP_BIND_PASSWORD = "test"
# 根据上面的改动 AUTH_LDAP_USER_SEARCH = LDAPSearch( 'ou=Test,dc=com,dc=cn', ldap.SCOPE_SUBTREE, '(uid=%(user)s)', )
# 请注意这部分 AUTH_LDAP_USER_ATTR_MAP = { 'username': 'cn', // 请对应login的username 'password': 'sn', // 请对应login的password } AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', )
3.4 修改django login
(很奇怪,发现很多教程都没写这块东东)
user = authenticate(username=username, password=password) if user: if user.is_active: if "ldap_username" in dir(user): //如果是自身的权限,请关注不同点 ***