gpt4 book ai didi

python - Django Auth LDAP - 使用 sAMAccountName 直接绑定(bind)

转载 作者:太空狗 更新时间:2023-10-29 22:09:41 32 4
gpt4 key购买 nike

有两种使用 Django Auth LDAP 验证用户身份的方法

  1. 搜索/绑定(bind)和
  2. 直接绑定(bind)。

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

第二种方法是从用户名中获取用户的 DN 并尝试直接绑定(bind)为用户。

我希望能够使用尝试访问应用程序的用户的用户 ID (sAMAccountName) 和密码进行直接绑定(bind)。请让我知道是否有办法实现这一目标?目前,由于下面解释的问题,我似乎无法完成这项工作。

在我的例子中,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”

这阻止我使用直接绑定(bind),因为用户的 sAMAccountNamesjones 并且这是与用户名 (%user) 对应的参数,我无法找到一种方法来构建适当的 AUTH_LDAP_USER_DN_TEMPLATE 来派生用户的 DN 使用。

由于上述问题,我现在正在使用搜索/绑定(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'

期待这里优秀的人提供一些指导。

最佳答案

我遇到了同样的问题。

我在现已删除的 bitbucket 存储库中遇到了票 21。 (cant-bind-and-search-on-activedirectory)。问题未迁移到 their github , 但作者提出了一种方法来更改 django-auth-ldap 的库文件这样它就可以进行直接绑定(bind)。

归结为更改 <python library path>/django_auth_ldap/backend.py_authenticate_user_dn 中包含两行:

if sticky and ldap_settings.AUTH_LDAP_USER_SEARCH:
self._search_for_user_dn()

我能够在运行 Arch Linux 3.9.8-1-ARCH 的本地机器上运行它,但我无法在运行 Ubuntu 13.04 的开发服务器上复制它。

希望这对您有所帮助。

关于python - Django Auth LDAP - 使用 sAMAccountName 直接绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16721603/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com