2013-05-20 21 views
0

我正在創建一個Django項目,該項目需要通過SSL進行HTTP基本認證。用戶通過我公司的LDAP服務器進行身份驗證。這正在使用https://docs.djangoproject.com/en/1.3/howto/auth-remote-user/中描述的方法。Django:通過自定義RemoteUserBackend路由用戶創建

我已經創建了一個django.contrib.auth.backends.RemoteUserBackend的子類,它定義了一個configure_user()方法,該方法根據從LDAP獲取的信息填充各種用戶字段。當用戶使用HTTP基本認證登錄時,這很好。

我的項目還要求應用的用戶能夠輸入用戶名到表單中。提交表單時,我希望執行相當於User.objects.get_or_create(username=username)的操作,並讓我的自定義RemoteUserBackend.configure_user()填充LDAP中所有缺少的字段。這不符合要求,取而代之的是獲得現有用戶(好)或創建只有用戶名字段設置(壞)的用戶。

我該如何獲得所需的行爲?我寧願不必翻出並用自定義模型替換Django的身份驗證模型,但可以在必要時完成。目標Django版本是1.3,但可以更改。

回答

0

我找到了問題的解決方案,但它需要放寬使用會話身份驗證而不是HTTP基本身份驗證的要求。

通過使用django-auth-ldap我能夠通過Django的正常會話身份驗證以及create a user populated from LDAP對我公司的LDAP服務器進行身份驗證。

django.contrib.auth.backends.RemoteUserBackend似乎與django-auth-ldap衝突,並且使用基本身份驗證登錄的用戶沒有從django-auth-ldap獲取它們的字段。我們可能能夠改變原來的要求來完成這項工作。