目前,我们需要为自定义应用程序配置基于组的 LDAP 登录。我们有名为 app1、app2 等的应用程序。
为了限制用户登录特定应用程序(例如 app1),那么对于该用户,它应该具有名为允许服务 = app1,用于用户登录到 app2允许服务 = app2
所以我们以这种方式创建了用户。
现在为了将应用程序绑定到 ldap,我们创建了如下用户
cn=app1,ou=应用程序,dc=prime,dc=ds,dc=geo,dc=com cn=app2,ou=应用程序,dc=prime,dc=ds,dc=geo,dc=com
现在我们配置LDAP ACL如下:
olcAccess: {0}to attrs=userPassword,shadowLastChange
by self write by anonymous auth
by dn="cn=admin,dc=ds,dc=geo,dc=com" write
by * none
olcAccess: {1}to dn.base=""
by * read
olcAccess: {2}to dn.subtree="ou=People,dc=prime,dc=ds,dc=geo,dc=com" filter="(allowedService=app1)"
by dn.exact="cn=app1,ou=Applications,dc=prime,dc=ds,dc=geo,dc=com" read
by * break
olcAccess: {3}to dn.subtree="ou=People,dc=prime,dc=ds,dc=geo,dc=com" filter="(allowedService=app2)"
by dn.exact="cn=app2,ou=Applications,dc=prime,dc=ds,dc=geo,dc=com" read
by * break
olcAccess: {4}to dn.subtree="ou=People,dc=prime,dc=ds,dc=geo,dc=com" attrs="entry" by dn.sub="ou=Applications,dc=prime,dc=ds,dc=geo,dc=com" read
by dn="cn=admin,dc=ds,dc=geo,dc=com" write
by self read
by * break
olcAccess: {5}to dn.subtree="ou=People,dc=prime,dc=ds,dc=geo,dc=com"
by dn.exact="cn=app3,ou=Applications,dc=prime,dc=ds,dc=geo,dc=com" read
by users read
olcAccess: {6}to dn.subtree="dc=prime,dc=ds,dc=geo,dc=com"
by anonymous write
但是当任何不支持过滤器的应用程序(如 suiteCRM)我们创建规则olc访问:{5}并将其绑定应用3用户,但整个 ACL 不起作用,所有用户都可以登录到所有应用程序。
所以有人能帮助我们吗?