1.前言
本文旨在介绍:在已完成django认证权限的基础上添加ldap。
2.回顾已完成的权限
网上有很多教程,这里不再细讲了。它包括两部分:
中间件实现
用到了django的2个表
django.contrib.auth.models 对应表:auth_userdjango.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): //如果是自身的权限,请关注不同点
***
转载于:https://www.cnblogs.com/flypig258/p/11309359.html
相关资源:垃圾分类数据集及代码