如何在Django项目中集成LDAP和AllAuth?

时间:2015-02-27 19:01:10

标签: django ldap django-allauth

我最近继承了一个使用AllAuth作为其身份验证系统的Django项目。需要更改项目以使用LDAP进行身份验证,我希望不必撕掉所有AllAuth代码。我知道django-registration可以使用LDAP作为后端,但AllAuth不能。这有什么补丁吗?

2 个答案:

答案 0 :(得分:3)

allauth(no "ldap" is mentioned在源代码和文档中)似乎都没有提供直接的LDAP集成。因此,

  1. 首先需要将LDAP与其他Python包(python-ldapdjango-auth-ldap)集成。
  2. allauth中的用户创建可能需要customized via DefaultAccountAdapter(allauth docs),具体取决于您的需求和潜在的用户名冲突。 GitHub issue 199解释了一些问题。
  3. 请注意,此解决方案适用于allauth和LDAP的组合使用情况。如果你想专门使用LDAP进行身份验证,那么在代码库中保留allauth可能没什么意义,或者可能只是一个开销;你必须把它撕掉。

答案 1 :(得分:1)

django中的ldap配置相当简单。我为我的应用程序使用以下设置。我还使用了一个名为python-ldap

的python库
AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
)

AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1:389"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=People,dc=local,dc=domain,dc=com",
                                   ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
}