我想在Django中集成LDAP身份验证,但我猜缺少一些配置

snz8szmq  于 2023-01-27  发布在  Go
关注(0)|答案(1)|浏览(111)

我想在Django中集成LDAP认证,但即使是认证也没有发生,即即使在Django管理面板中提供了正确的LDAP凭据和用户详细信息后,用户详细信息也没有存储在Django用户模型中。
这是我setttings.py在Django中的www.example.com文件

AUTH_LDAP_SERVER_URI = 'ldaps://xxxxxx:636'
AUTH_LDAP_BIND_DN = 'CN=xxxxx,OU=Service,OU=Accounts,OU=SF_SAP,DC=sf,DC=priv'
AUTH_LDAP_BIND_PASSWORD = 'xxxxxxxx'
AUTH_LDAP_USER_SEARCH = LDAPSearch('OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv',ldap.SCOPE_SUBTREE, '(CN=%(user)s)')

AUTH_LDAP_USER_ATTR_MAP = {
        "first_name": "givenName",
        "last_name": "sn",
        "email": "mail",
        "username": "uid",
        "password": "userPassword",
}
AUTH_LDAP_PROFILE_ATTR_MAP = {
        "home_directory": "homeDirectory"
}
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_CACHE_TIMEOUT = 3600

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

有人能指出我漏掉了什么吗?

vof42yt1

vof42yt11#

搜索过滤器似乎是错误的:根据用户属性Map,usernameMap为uid,如果正确,则搜索过滤器应为'(uid=%(user)s)'

AUTH_LDAP_USER_SEARCH = LDAPSearch(
  'OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv', ldap.SCOPE_SUBTREE, '(uid=%(user)s)'
)

但也可能相反(没有用户dn示例很难知道):如果身份验证有效,但用户资源调配无效,则修复Map:"username": "cn".
您可能还需要再次检查您尝试验证的所有用户是否属于指定的子树'OU=User,OU=Accounts,OU=SF_SAP, DC=sf,DC=priv'

相关问题