0

我正在创建一个 Django 项目,它需要通过 SSL 进行 HTTP 基本身份验证。用户通过我公司的 LDAP 服务器进行身份验证。这是使用https://docs.djangoproject.com/en/1.3/howto/auth-remote-user/中描述的方法工作的。

我创建了一个子类,django.contrib.auth.backends.RemoteUserBackend它定义了一个configure_user()方法,该方法根据从 LDAP 中提取的信息填充各种用户字段。当用户使用 HTTP 基本身份验证登录时,这工作得很好。

我的项目还要求应用程序的用户能够在表单中输入用户名。提交表单后,我想做相当于User.objects.get_or_create(username=username)并让我的自定义RemoteUserBackend.configure_user()填充 LDAP 中所有缺失的字段。这不能按预期工作,而是获取现有用户(好)或创建仅设置用户名字段的用户(坏)。

如何获得所需的行为?我宁愿不必撕掉并用自定义模型替换 Django 的身份验证模型,但如果需要,可以这样做。目标 Django 版本是 1.3,但可以更改。

4

1 回答 1

0

我找到了解决问题的方法,但它需要放宽使用会话身份验证而不是 HTTP 基本身份验证的要求。

通过使用django-auth-ldap我能够通过 Django 的正常会话身份验证对我公司的 LDAP 服务器进行身份验证,并创建一个从 LDAP 填充的用户

django.contrib.auth.backends.RemoteUserBackend似乎与 django-auth-ldap 冲突,并且使用基本身份验证登录的用户不会从 django-auth-ldap 填充他们的字段。我们也许可以改变原来的要求来完成这项工作。

于 2013-05-20T17:57:03.263 回答