LDAP 把一个用户加到多个 Group 后如何验证?

2017-08-15 14:32:52 +08:00
 larkifly
假设我有一个用户 A,分别在三个组,如下:
uid=A,cn=gitlab,ou=B,dc=C,dc=D
uid=A,cn=zabbix,ou=B,dc=C,dc=D
uid=A,cn=jenkins,ou=B,dc=C,dc=D

我想要的效果是,在 gitlab、zabbix、jenkins 上分别使用不同的 base_dn 进行验证,但是用户和密码是一个,怎么配置了?
6131 次点击
所在节点    程序员
8 条回复
xAx
2017-08-15 16:19:20 +08:00
你这是三个用户.
一个用户在三个组使用 memberof
Beebird
2017-08-15 17:00:25 +08:00
楼上是对的,创建 user 的 LDIF 应该是类似这样吧:

dn: uid=A,ou=B,dc=C,dc=D,dc=E
cn: A
uid: A
gecos: AAA
gidnumber: xxx

dn: cn=gitlab,ou=group,dc=C,dc=D,dc=E
changetype: modify
add: memberUid
memberUid: A

dn: cn=zabbix,ou=group,ou=B,dc=C,dc=D,dc=E
changetype: modify
add: memberUid
memberUid: A

dn: cn=jenkins,ou=group,ou=B,dc=C,dc=D,dc=E
changetype: modify
add: memberUid
memberUid: A
larkifly
2017-08-16 09:52:33 +08:00
@xAx memberof 我试了,bind 的时候一直报密码不对
larkifly
2017-08-16 09:54:24 +08:00
@Beebird memberof 这个方法我知道,但是验证的时候,base_dn 填什么了? cn=jenkins,ou=group,ou=B,dc=C,dc=D,dc=E 如果填这个,那么 bind 的时候,就报密码错误
Beebird
2017-08-16 10:59:18 +08:00
base_dn 还是 ou=B,dc=C,dc=D,dc=E

对于 group 的校验可以通过 filter, 例如:
(&(uid=%{username})(memberOf= cn=gitlab,ou=group,dc=C,dc=D,dc=E))

不同应用的 filter 语法可能略有不同
larkifly
2017-08-16 11:42:58 +08:00
@Beebird 哦,明白了,我发现,好多开源的产品,ldap 验证都不支持 filter,只能做 bind 验证。
Beebird
2017-08-16 13:00:29 +08:00
@larkifly 是的。。。gitlab 和 jenkins 应该可以。
larkifly
2017-08-17 13:50:47 +08:00
@Beebird gitlab 企业版才行,jenkins 还没有试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383091

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX