Natural

           

          Django 使用LDAP驗證登錄

              學習Django做了個小網(wǎng)站,但是如果只用在公司內部的話,特此又要員工注冊網(wǎng)站帳號,這個是個槽糕的問題。

              最好的方式就是直接使用員工的計算機帳號來登錄,那樣就不用為又要為記住個新帳號名密碼而苦惱了。

              恰好公司有LDAP服務器,并且存有員工賬號信息。這樣就可以通過Django的LDAP插件,來完成員工帳號的登錄驗證功能。

              首先需要安裝以下模塊:
              python-ldap 2.4.12    https://pypi.python.org/pypi/python-ldap/2.4.12

              安裝完成后,django項目中settings.py的ldap配置如下:
           1 #LDAP configuration
           2 import ldap
           3 from django_auth_ldap.config import LDAPSearch
           4 AUTHENTICATION_BACKENDS = (
           5     'django_auth_ldap.backend.LDAPBackend',
           6     'django.contrib.auth.backends.ModelBackend',  
           7 )
           8 
           9 AUTH_LDAP_SERVER_URI = 'ldap://SERVER_IP'
          10 AUTH_LDAP_BIND_DN = 'CN=ACCOUNT_NAME,OU=Accounts,DC=ldap,DC=example,DC=com'
          11 AUTH_LDAP_BIND_PASSWORD = "PASSWORD"
          12 AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=Accounts,DC=ldap,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(&(objectClass=person)(sAMAccountName=%(user)s))")
          13 
          14 AUTH_LDAP_USER_ATTR_MAP = {
          15      "first_name""givenName",
          16      "last_name""sn",
          17      "email""mail"
          18 }

              工作流程:
              登錄時,在默認的django數(shù)據(jù)庫帳號驗證之前,會先到LDAP服務器上去驗證。
              輸入的登錄帳號到LDAP服務器驗證之前,會先用配置文件中的綁定DN、密碼去驗證,驗證通過才能繼續(xù)用輸入的帳號密碼去LDAP服務器驗證。
              若LDAP驗證通過,會檢查django數(shù)據(jù)庫中是否已存在該帳號,若不存在,則會根據(jù)LDAP驗證通過后獲取的用戶信息,來創(chuàng)建django數(shù)據(jù)庫的用戶賬號。帳號名和輸入的一樣,密碼則會設為一個無效的密碼(看了下源碼是"!",無法合法哈希編碼),因為該帳號密碼驗證是從LDAP上進行,所以django中的密碼不會被使用到。除了默認的用戶姓名、郵件等信息,若要把Group信息也同步過來的話需要進行相應的配置。
              若LDAP驗證失敗,則會使用Django數(shù)據(jù)庫的默認登錄驗證。

              PS: LDAP快速入門   http://www.cnblogs.com/obpm/archive/2010/08/28/1811065.html

          posted on 2013-06-27 16:30 此號已被刪 閱讀(7704) 評論(3)  編輯  收藏 所屬分類: Python

          評論

          # re: Django 使用LDAP驗證登錄[未登錄] 2013-10-21 19:23 left

          只用配置settings嗎  回復  更多評論   

          # re: Django 使用LDAP驗證登錄 2014-11-18 18:12 gaobo

          login頁面還需要額外寫么?
          會不會彈出一個http basic的用戶名&密碼輸入框?  回復  更多評論   

          # re: Django 使用LDAP驗證登錄 2014-12-25 11:39 jackyliu

          @left
          只配置settings 嗎?  回復  更多評論   

          導航

          統(tǒng)計

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 合作市| 颍上县| 藁城市| 东辽县| 海口市| 上蔡县| 彭泽县| 南安市| 铜山县| 涿州市| 蓬安县| 太和县| 泽州县| 岑溪市| 四子王旗| 西乌珠穆沁旗| 大连市| 高州市| 姚安县| 沈阳市| 分宜县| 惠水县| 鄂温| 黄浦区| 商丘市| 云安县| 改则县| 甘谷县| 乌鲁木齐市| 永修县| 平江县| 班玛县| 武乡县| 乌鲁木齐县| 普洱| 陆丰市| 义乌市| 关岭| 聂荣县| 岳阳市| 容城县|