Natural

           

          Django 使用LDAP驗(yàn)證登錄

              學(xué)習(xí)Django做了個(gè)小網(wǎng)站,但是如果只用在公司內(nèi)部的話,特此又要員工注冊(cè)網(wǎng)站帳號(hào),這個(gè)是個(gè)槽糕的問(wèn)題。

              最好的方式就是直接使用員工的計(jì)算機(jī)帳號(hào)來(lái)登錄,那樣就不用為又要為記住個(gè)新帳號(hào)名密碼而苦惱了。

              恰好公司有LDAP服務(wù)器,并且存有員工賬號(hào)信息。這樣就可以通過(guò)Django的LDAP插件,來(lái)完成員工帳號(hào)的登錄驗(yàn)證功能。

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

              安裝完成后,django項(xiàng)目中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 }

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

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

          posted on 2013-06-27 16:30 此號(hào)已被刪 閱讀(7709) 評(píng)論(3)  編輯  收藏 所屬分類: Python

          評(píng)論

          # re: Django 使用LDAP驗(yàn)證登錄[未登錄](méi) 2013-10-21 19:23 left

          只用配置settings嗎  回復(fù)  更多評(píng)論   

          # re: Django 使用LDAP驗(yàn)證登錄 2014-11-18 18:12 gaobo

          login頁(yè)面還需要額外寫(xiě)么?
          會(huì)不會(huì)彈出一個(gè)http basic的用戶名&密碼輸入框?  回復(fù)  更多評(píng)論   

          # re: Django 使用LDAP驗(yàn)證登錄 2014-12-25 11:39 jackyliu

          @left
          只配置settings 嗎?  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(8)

          隨筆分類(83)

          隨筆檔案(78)

          文章檔案(2)

          相冊(cè)

          收藏夾(7)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 无为县| 扶风县| 宜良县| 米林县| 五莲县| 信阳市| 陆良县| 拉孜县| 北流市| 翁源县| 兰西县| 花莲县| 江津市| 乌拉特中旗| 南陵县| 海林市| 德格县| 右玉县| 越西县| 张北县| 蒙山县| 大厂| 福州市| 桐梓县| 镇巴县| 玉门市| 正镶白旗| 兴化市| 南靖县| 冷水江市| 前郭尔| 武清区| 历史| 青铜峡市| 赞皇县| 民丰县| 英德市| 武义县| 正镶白旗| 墨脱县| 鄄城县|