相关疑难解决方法(0)

Django Auth LDAP - 使用sAMAccountName直接绑定

有两种方法可以使用Django Auth LDAP对用户进行身份验证

  1. 搜索/绑定和
  2. 直接绑定.

第一个涉及匿名或使用固定帐户连接到LDAP服务器并搜索身份验证用户的可分辨名称.然后我们可以尝试再次使用用户的密码绑定.

第二种方法是从用户名中导出用户的DN并尝试直接绑定用户.

我希望能够使用userid(sAMAccountName)和尝试访问应用程序的用户的密码进行直接绑定.如果有办法实现这个目的,请告诉我?目前,由于下面解释的问题,我似乎无法完成这项工作.

就我而言,LDAP中的用户DN具有以下格式

**'CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'**
Run Code Online (Sandbox Code Playgroud)

这基本上转换为'CN = FirstName LastName,OU = Users,OU = Central,OU = US,DC = client,DC = corp'

这阻止我使用Direct Bind,因为用户的sAMAccountNamesjones,这是与用户名(%user)对应的参数,我无法找到一种方法来构建正确的AUTH_LDAP_USER_DN_TEMPLATE来派生用户的DN使用.

由于上面解释的问题,我现在使用Search/Bind,但这需要我在AUTH_LDAP_BIND_DNAUTH_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'
Run Code Online (Sandbox Code Playgroud)

期待来自这里的精彩人士的一些指导.

python django active-directory django-authentication django-auth-ldap

6
推荐指数
2
解决办法
8710
查看次数