Django项目中添加ldap登陆认证功能的实现
setting配置
# 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认证:
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

浙公网安备 33010602011771号