我们启用应用程序来使用 LDAP。
在应用程序的配置中,我们需要告知一个 URL 来连接到 LDAP。我们目前提供以下 URL...
ldap://10.2.0.5:389/dc=domain,dc=abc,dc=de?uid
问题:我们需要在上面的 URL 中添加一个过滤器,以便只定位属于“accessgroup”组的用户,从而将应用程序访问权限限制为仅属于该组的用户。
也就是类似这样的东西……
curl "ldap://10.2.0.5:389/dc=domain,dc=abc,dc=de?uid?sub?(&(memberof=cn=accessgroup,ou=groups,dc=domain,dc=abc,dc=de)(uid=%s))"
我们已经尝试了数百种设置,但都没有用...=|
团体
cn:
accessgroup
gidNumber:
1004
memberUid:
usera
userb
userc
userd
usere
userf
userg
userh
useri
objectClass:
top
posixGroup
用户
cn:
User Letter A
gecos:
User Letter A
gender:
M
gidNumber:
544
givenName:
User
gotoLastSystemLogin:
01.01.1970 00:00:00
homeDirectory:
/home/usera
loginShell:
/bin/bash
mail:
[email protected]
objectClass:
top
person
organizationalPerson
inetOrgPerson
gosaAccount
posixAccount
shadowAccount
sambaSamAccount
[...]
uid:
usera
uidNumber:
1004
[...]
谢谢!=D
答案1
您的 LDAP 服务器的 memberOf 属性是如何创建的?您是否检查过以确保您的用户确实具有 memberOf 属性?
例如,在 OpenLDAP 中,仅当您使用 memberof 覆盖或使用动态列表管理它们时,才会填充 memberOf。
答案2
情况:
问题在于我们尝试使用 POSIX 组进行过滤,但没有特定的覆盖。现有的解决方法有点复杂且费力,可以在此处观察到为 POSIXGROUPS 生成 MEMBEROF 属性。
解决方案:
为了解决这个问题,我们实施了一个简单的解决方案,可以在这里看到...
psx-grp-flt - 用户的 posixGroup 成员资格与 pgMemberOf (memberOf)
...基本上如下...
一个简单的 Python 2.7 脚本,将每个用户的 posixGroup(POSIX 组)关联存储在其 pgMemberOf(memberOf)属性中。目的是启用如下所示的搜索过滤器...
模型
ldapsearch -x -H'ldap://127.0.0.1:389'-b'ou=persons,dc=domain,dc=abc,dc=de'-
D'cn=admin,dc=domain,dc=abc,dc=de'-
w'mySecretValue'
'(&(pgMemberOf=cn=certaingroup,ou=groups,dc=domain,dc=abc,dc=de)(uid=certainuid))'例子
ldapsearch -x -H '<OPENLDAP_URI>' -b '<PERSONS_OU>,<BASE_DN>'
-D '<ADM_USER_DN>'
-w '<ADM_USER_PASSWORD>'
'(&(pgMemberOf=cn=<PSX_GROUP_CN>,<GROUPS_OU>,<BASE_DN)(uid=<PERSON_UID>))'此脚本在以下情况下非常有用:我们已经安装了 OpenLDAP,并且希望以非常简单的方式为已存在的 POSIX 组提供过滤器,而无需创建新类型的组。当无法安装覆盖或此过程过于费力或有风险时,它也很有用。
谢谢!=D