使用django-python3-ldap查找安全组的用户

时间:2019-11-22 20:14:11

标签: python django ldap ldap-query

LDAP和AD的

非常。我正在使用django-python3-ldap来验证django应用程序的用户。 我们希望做到这一点,以便只有部分用户可以访问我们的django应用程序,因此昨天他们添加了安全组“ MyAppGroup”。唯一的问题是,我似乎无法将其添加到搜索库中。用户查找总是失败。

有效的搜索基础(返回所有用户):

"ou=Basic Users, ou=BIGAPP Users,dc=subd,dc=domain,dc=com"

当我问时,他们说MyAppGroup是一个安全组,“基本用户”和“ BIGAPP用户”是“ AD成员”。

dsquery group -name "MyAppGroup"

返回:

CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com

此结果不能作为搜索基础。 我是否需要添加自定义搜索过滤器才能正常工作?任何帮助表示赞赏。


编辑:现在将(&(memberOf = BIGAPPS组)(memberOf = cn = MyAppGroup))添加到搜索过滤器将返回“ LDAP用户属性为空”


编辑2: 运行命令dsget group "CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com" -members -expand返回一个组成员列表:

“ CN =用户McLastname,OU =基本用户,OU = BIGAPP组,dc = subd,dc =域,dc = com” “ CN = User2姓氏,OU =基本用户,OU = BIGAPP组,dc = subd,dc =域,dc = com”,。etc

所以我知道这个小组存在。我觉得我缺少一些小东西来完成这项工作。

编辑3:

settings.py

LDAP_AUTH_FORMAT_USERNAME = "django_python3_ldap.utils.format_username_active_directory"

LDAP_AUTH_USE_TLS = True

LDAP_AUTH_ACTIVE_DIRECTORY_DOMAIN = "SUBD"
LDAP_AUTH_SEARCH_BASE="DC=subd,DC=domain,DC=com"
LDAP_AUTH_OBJECT_CLASS="user"
LDAP_AUTH_USER_FIELDS = {
    "username": "sAMAccountName,
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail",
}

LDAP_AUTH_FORMAT_SEARCH_FILTERS="myapp.searchfilter.myapp_search_filters"

搜索过滤器

def myapp_search_filters(ldap_fields):
    search_filters = format_search_filters(ldap_fields)
    search_filters.append("(&(memberOf=cn=MyAppGroup,OU=BIGAPP_Group,DC=subd,DC=domain,dc=com))")

1 个答案:

答案 0 :(得分:1)

在memberOf过滤器中使用组的标准DN:(&(memberOf=CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com))