【问题标题】:Django LDAP authentication through Active Directory 2008通过 Active Directory 2008 进行 Django LDAP 身份验证
【发布时间】:2011-05-31 21:03:02
【问题描述】:

我正在尝试通过公司 Active Directory 服务器对我的用户进行身份验证。 我无法正确配置它,我知道 LDAP 工作我有一个 MediaWiki,它已配置并正在工作 在 Active Directory 服务器上进行身份验证。

系统:

    Active Directory 2008
    Django (1, 3, 0, 'final', 0)
    django-auth-ldap 1.0.9

这是我在settings.py中的配置

    from django_auth_ldap.config import LDAPSearch
    import logging

    # makes sure this works in Active Directory
    ldap.set_option(ldap.OPT_REFERRALS, 0)

    LDAP_SERVER_URI = 'ldap://ad.exemple.com'
    AUTH_LDAP_BIND_DN = 'my_user'
    AUTH_LDAP_BIND_PASSWORD = 'my_pass'
    AUTH_LDAP_USER_SEARCH = LDAPSearch('dc=exemple,dc=com', ldap.SCOPE_SUBTREE, '(SAMAccountName=%(user)s)')

    # Populate the Django user from the LDAP directory.
    AUTH_LDAP_USER_ATTR_MAP = {
            "first_name": "givenName",
            "last_name": "sn",
            "email": "mail"
    }

    # This is the default, but I like to be explicit.
    AUTH_LDAP_ALWAYS_UPDATE_USER = True

    AUTHENTICATION_BACKENDS = (
            'django_auth_ldap.backend.LDAPBackend',
            'django.contrib.auth.backends.ModelBackend',
    )

我也通过添加新的URI尝试了ssl方式

    LDAP_SERVER_URI = 'ldaps://ad.exemple.com:636'

我使用主组 User 来搜索我不需要任何我想要验证的特定组。

它返回错误的错误信息:

    WARNING 2011-05-31 16:50:19,429 backend 3968 140632428340992 Caught LDAPError while authenticating my_user: INVALID_CREDENTIALS({'info': '80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 525, v1772', 'desc': 'Invalid credentials'},)
    [31/May/2011 16:50:19] "POST /admin/ HTTP/1.1" 200 9648

看到这个错误并寻找LDAP错误DSID-0C0903AA我发现我应该尝试像这样设置用户名

my_user@exemple.com

它不起作用,它返回错误:

    ERROR 2011-05-31 16:55:38,947 config 6505 139868662060800 search_s('dc=ubilium,dc=loc', 2, '(SAMAccountName=my_user)') raised OPERATIONS_ERROR({'info': '000004DC: LdapErr: DSID-0C0906DD, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1772', 'desc': 'Operations error'},)
    DEBUG 2011-05-31 16:55:38,947 backend 6505 139868662060800 Authentication failed for my_user

有人知道如何连接吗?

【问题讨论】:

    标签: django active-directory ldap django-auth-ldap


    【解决方案1】:

    您遇到的第一个错误是 LDAP 49,子代码为 525,这意味着找不到用户。 IE。您的绑定 DN 不正确。

    您的第二次尝试使用 userPrincipalName 格式将失败,正如您的配置所述: AUTH_LDAP_USER_SEARCH = LDAPSearch('dc=exemple,dc=com', ldap.SCOPE_SUBTREE, '(SAMAccountName=%(user)s)')

    因此,您尝试在以下过滤器中使用传入的用户名:(SAMAccountName=%(user)s)

    我想知道这是否是每端额外的s? IE。 (SAMAccountName=%(user)) 会更正确吗?

    它的意思是,对于 $(user) 变量,在 AD 中找到 sAMAccountName 属性与该值匹配的对象,然后使用返回的 DN 作为绑定 DN。但是您没有得到正确的 DN,因此 LDAP 49 - 525 错误。

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2010-09-15
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多