使用 django-python3-ldap 查找安全组的用户
Find users of security group with django-python3-ldap
非常 LDAP 和 AD 新手。我正在使用 django-python3-ldap 来验证我的 django 应用程序的用户。
我们想做到只有一部分用户可以访问我们的 django 应用程序,所以昨天他们添加了安全组 'MyAppGroup.' 唯一的问题是,我似乎无法将其添加到搜索库中。用户查找总是失败。
工作搜索基础(returns 所有用户):
"ou=Basic Users, ou=BIGAPP Users,dc=subd,dc=domain,dc=com"
一问,他们说MyAppGroup是安全组,“Basic Users”和“BIGAPP Users”是“AD Members”。
dsquery group -name "MyAppGroup"
returns:
CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com
此结果不能作为搜索基础。
我是否需要添加自定义搜索过滤器才能正常工作?感谢任何帮助。
编辑:添加 (&(memberOf=BIGAPPS Group)(memberOf=cn=MyAppGroup)) 现在搜索过滤器 returns“LDAP 用户属性为空”
编辑 2:
运行命令dsget group "CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com" -members -expand
returns群成员列表:
"CN=User McLastname,OU=Basic Users,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com"
"CN=User2 o'Lastname,OU=Basic Users,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com",..etc
所以我知道该组存在。我觉得我缺少一些小部分来完成这项工作。
编辑 3:
settings.py
LDAP_AUTH_URL = "ldap://sub.domain.com"
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))")
在 memberOf 过滤器中使用组的完全限定 DN:(&(memberOf=CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com))
非常 LDAP 和 AD 新手。我正在使用 django-python3-ldap 来验证我的 django 应用程序的用户。 我们想做到只有一部分用户可以访问我们的 django 应用程序,所以昨天他们添加了安全组 'MyAppGroup.' 唯一的问题是,我似乎无法将其添加到搜索库中。用户查找总是失败。
工作搜索基础(returns 所有用户):
"ou=Basic Users, ou=BIGAPP Users,dc=subd,dc=domain,dc=com"
一问,他们说MyAppGroup是安全组,“Basic Users”和“BIGAPP Users”是“AD Members”。
dsquery group -name "MyAppGroup"
returns:
CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com
此结果不能作为搜索基础。 我是否需要添加自定义搜索过滤器才能正常工作?感谢任何帮助。
编辑:添加 (&(memberOf=BIGAPPS Group)(memberOf=cn=MyAppGroup)) 现在搜索过滤器 returns“LDAP 用户属性为空”
编辑 2:
运行命令dsget group "CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com" -members -expand
returns群成员列表:
"CN=User McLastname,OU=Basic Users,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com" "CN=User2 o'Lastname,OU=Basic Users,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com",..etc
所以我知道该组存在。我觉得我缺少一些小部分来完成这项工作。
编辑 3:
settings.py
LDAP_AUTH_URL = "ldap://sub.domain.com"
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))")
在 memberOf 过滤器中使用组的完全限定 DN:(&(memberOf=CN=MyAppGroup,OU=BIGAPP Groups,dc=subd,dc=domain,dc=com))