有两种方法可以使用 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'
这阻止我使用 Direct Bind 作为sAMA账户名用户的sjones这是与用户名(%user)相对应的参数,我无法找到一种方法来构建正确的AUTH_LDAP_USER_DN_TEMPLATE派生用户的 DN。
由于上述问题,我现在使用搜索/绑定,但这需要我在以下位置指定固定的用户凭据AUTH_LDAP_BIND_DN and AUTH_LDAP_BIND_PASSWORD.
这是我目前的设置.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'
期待这里优秀人士的一些指导。