#简介 如下内容主要介绍关于Django系统的后台admin管理页面中如何采用LDAP用户认证,并实现登录的办法django
#用户认证接入前提ui
#Django配置 编辑系统配置文件(setting),直接添加在配置最后便可code
import ldap from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, GroupOfUniqueNamesType # Baseline configuration. AUTH_LDAP_START_TLS AUTH_LDAP_SERVER_URI = "ldap://eric_ldap.oschina.com:389" #配置ldap的服务地址 # 指定使用ldap做为认证系统 AUTH_LDAP_BIND_DN = "uid=admin,cn=users,cn=accounts,dc=oschina,dc=com" AUTH_LDAP_BIND_PASSWORD = "123qwe" # ldap的用户搜索的路径,能够使用LDAP的客户端查看用户的搜索路径 # 我这边使用的ldapBorwser查看的ldap帐号结构和信息 AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=users,cn=accounts,dc=oschina,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)") # ldap用户组的搜索路径 AUTH_LDAP_GROUP_SEARCH = LDAPSearch("cn=groups,cn=accounts,dc=oschina,dc=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)" ) AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="cn") # ldap中对于的用户属性同步到django用户帐号的属性对应列 AUTH_LDAP_USER_ATTR_MAP = { "first_name": "givenName", "last_name": "sn", "email": "mail" } AUTH_LDAP_USER_FLAGS_BY_GROUP = { #定义用户能够登陆admin后台的组是哪一个,前面ldap中已经建立了这个组,并加入了指定用户 # 默认建立的django用户是不能登陆admin后台的 "is_staff": "cn=eric_admin,cn=groups,cn=accounts,dc=oschina,dc=com", #定义用户能够彻底操做admin后台的组是哪一个,前面ldap中已经建立了这个组,并加入了指定用户 "is_superuser": "cn=eric_admin,cn=groups,cn=accounts,dc=oschina,dc=com" } # 同步ldap的用户信息到django中 # 若是第一次登陆django中没有此用户,ldap中有,能够自动在django中将用户复制过去,并指定权限 AUTH_LDAP_ALWAYS_UPDATE_USER = True # 设定django第一采用ldap权限认证,若是ldap中没有用户,再使用django中的用户认证 AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', )
#效果 无需其余操做,重启django系统,而后使用ldap的用户登录便可。get
若是django自己无此用户,能够经过ldap帐号正常登录,并权限赋予成功,就OK了同步