【发布时间】:2013-05-19 06:23:03
【问题描述】:
有两种方法可以使用 Django Auth LDAP 对用户进行身份验证
- 搜索/绑定和
- 直接绑定。
第一个涉及匿名或使用固定帐户连接到 LDAP 服务器并搜索身份验证用户的可分辨名称。然后我们可以尝试再次与用户密码绑定。
第二种方法是从用户名中导出用户的DN,并尝试直接绑定为用户。
我希望能够使用尝试访问应用程序的用户的用户 ID (sAMAccountName) 和密码进行直接绑定。请让我知道是否有办法实现这一目标?目前,由于下面解释的问题,我似乎无法完成这项工作。
在我的例子中,LDAP 中用户的 DN 格式如下
**'CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'**
这基本上翻译为'CN=FirstName LastName,OU=Users,OU=Central,OU=US,DC=client,DC=corp'
这使我无法使用直接绑定,因为用户的 sAMAccountName 是 sjones,这是与用户名 (%user) 对应的参数,我无法找到一种方法来构建一个正确的 AUTH_LDAP_USER_DN_TEMPLATE 来派生用户的 DN。
由于上述问题,我现在正在使用搜索/绑定,但这需要我在 AUTH_LDAP_BIND_DN 和 AUTH_LDAP_BIND_PASSWORD 中指定一个固定的用户凭据。
这是我当前的 settings.py 配置
AUTH_LDAP_SERVER_URI = "ldap://10.5.120.161:389"
AUTH_LDAP_BIND_DN='CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_BIND_PASSWORD='fga.1234'
#AUTH_LDAP_USER_DN_TEMPLATE = 'CN=%(user)s,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
LDAPSearch("OU=Users, OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
LDAPSearch("OU=Users,OU=Regional,OU=Locales,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
)
AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn","email":"mail"}
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
AUTH_LDAP_REQUIRE_GROUP = 'CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
期待这里的好人提供一些指导。
【问题讨论】:
标签: python django active-directory django-authentication django-auth-ldap