LDAP - 向 LDAP URL 添加过滤器,以便只有属于特定组的用户才能访问应用程序

LDAP - 向 LDAP URL 添加过滤器,以便只有属于特定组的用户才能访问应用程序

我们启用应用程序来使用 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

相关内容