一, 背景介绍
现有发布平台以及质量平台,每次用户登录,需要创建用户,比较麻烦,现在接入ldap域用户,统一管理登录用户
二, 开发平台环境配置
1. 安装软件
]# yum -y install python-devel
]# yum -y install openldap-devel
2. 进入虚拟环境,安装pip包
(.venv)]# pip install python-ldap===3.2.0
(.venv)]# pip install django-auth-ldap===2.1.0
(.venv)]# python
> import ldap
> 导入模块没有问题,代表成功
三, 修改项目配置文件 settings.py
... ...
# LDAP
ENABLE_LDAP = True
if ENABLE_LDAP:
import ldap
from django_auth_ldap.config import LDAPSearch, LDAPSearchUnion, GroupOfNamesType
# 修改Django认证先走ldap,再走本地认证
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend', # 配置为先使用LDAP认证,如通过认证则不再使用后面的认证方式
'django.contrib.auth.backends.ModelBackend', # django系统中手动创建的用户也可使用,优先级靠后。注意这2行的顺序
)
AUTH_LDAP_SERVER_URI = "ldap://192.168.89.128:389"
AUTH_LDAP_BIND_DN = "cn=Manager,dc=ktz,dc=com"
AUTH_LDAP_BIND_PASSWORD = "123456"
# 允许认证用户的路径
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=devops,dc=ktz,dc=com", ldap.SCOPE_SUBTREE, "(cn=%(user)s)")
# 是否登录后从ldap同步用户,不进行同步,因为下游的用户表是什么样的不能确定,只能确定它也使用邮箱前缀
AUTH_LDAP_ALWAYS_UPDATE_USER = True
... ...
四, 用户初步登录验证
1. 从ldap服务器创建用户 wangli/123456
2. 登录平台,输入用户名密码,可以正常进入,验证成功.
3. 在ldap服务器删除创建的用户wangli
4. 再次进入登录平台,输入用户名wangli和密码123456,无法登录,整体流程完成.