#簡介 如下內容主要介紹關於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了同步