我对LDAP很陌生,并尝试为用户登录设置继承的模型,具有特定于部门等的访问级别。
示例架构如下所示:
DN: dc=domain,dc=com
/cn=people (groupOfNames)
/joe (inetOrgPerson)
/alex (inetOrgPerson)
/nick (inetOrgPerson)
/boss (inetOrgPerson)
/qaJane (inetOrgPerson)
/analystBob (inetOrgPerson)
/ou=groups (organizationalUnit)
/developers (groupOfNames)
member: uid=joe,cn=people,dc=domain,dc=com
member: uid=nick,cn=people,dc=domain,dc=com
/testers (groupOfNames)
member: uid=qaJane,cn=people,dc=domain,dc=com
/projectManagers (groupOfNames)
member: uid=alex,cn=people,dc=domain,dc=com
/analysts (groupOfNames)
member: uid=boss,cn=people,dc=domain,dc=com
member: uid=analystBob,cn=people,dc=domain,dc=com
/ou=applications (organizationalUnit)
/gitlab (groupOfNames)
member: cn=developers,ou=groups,dc=domain,dc=com
member: cn=projectManagers,ou=groups,dc=domain,dc=com
/redmine (groupOfNames)
member: cn=testers,ou=groups,dc=domain,dc=com
member: cn=developers,ou=groups,dc=domain,dc=com
member: cn=projectManagers,ou=groups,dc=domain,dc=com
/nfs (groupOfNames)
member: cn=analysts,ou=groups,dc=domain,dc=com
member: cn=projectManagers,ou=groups,dc=domain,dc=com
简而言之,它可以这样描述:
- 许多用户
- 少数组(开发人员、经理、分析师、老板等)
- 一些组包括其他组(即:项目经理包含在开发人员中)
- 很少有应用程序。
- 应用程序包括组和/或用户
让用户搜索登录名并考虑所有组之间的用户继承的正确方法是什么?
即,如果我想将用户登录到 gitlab - 像这样的过滤器仅适用于直接包含(如果用户直接包含在我过滤的对象中,但它不适用于组包含):(&(objectClass=inetOrgPerson)(memberOf=cn=redmine,ou=applications,dc=domain,dc=com))
您需要执行类似于"的搜索:
(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:cn=redmine,ou=applications,dc=domain,dc=com)
从活动目录组相关搜索