cn=corevpn,ou=tech,ou=group,dc=openldap,dc=example,dc=com
下的会员能够登录openvpn<LDAP>
URL ldap://127.0.0.1:389
BindDN cn=admin,dc=openldap,dc=example,dc=com
Password "secret"
Timeout 60
FollowReferrals yes
TLSEnable no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=openldap,dc=example,dc=com"
SearchFilter "(uid=%u)"
RequireGroup true
<Group>
BaseDN "ou=Group,dc=openldap,dc=example,dc=com"
SearchFilter "(&(objectClass=posixGroup)(cn=corevpn)(memberUid=%u))"
MemberAttribute memberUid
</Group>
</Authorization>
ou=people,dc=openldap,dc=example,dc=com
。root@master:/container/service/slapd/assets/config/bootstrap/ldif/custom# ldapsearch -x -LLL -H ldapi:/// -D "cn=admin,dc=openldap,dc=example,dc=com" -W -b "ou=group,dc=openldap,dc=example,dc=com" "(memberUid=kevin)"
Enter LDAP Password:
dn: cn=corevpn,ou=tech,ou=Group,dc=openldap,dc=example,dc=com
cn: corevpn
gidNumber: 504
objectClass: posixGroup
objectClass: top
memberUid: kevin
遇到的错误是:
openldap 日志
665732a0 conn=1120 fd=14 ACCEPT from IP=172.30.0.11:38546 (IP=0.0.0.0:389)
665732a0 conn=1120 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1120 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1120 op=0 RESULT tag=97 err=0 text=
665732a0 conn=1120 op=1 SRCH base="ou=people,dc=openldap,dc=example,dc=com" scope=2 deref=0 filter="(uid=kevin)"
665732a0 conn=1120 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
665732a0 conn=1121 fd=15 ACCEPT from IP=172.30.0.11:38558 (IP=0.0.0.0:389)
665732a0 conn=1121 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1121 op=0 BIND dn="cn=admin,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1121 op=0 RESULT tag=97 err=0 text=
665732a0 conn=1121 op=1 BIND anonymous mech=implicit ssf=0
665732a0 conn=1121 op=1 BIND dn="cn=kevin,ou=People,dc=openldap,dc=example,dc=com" method=128
665732a0 conn=1121 op=1 BIND dn="cn=kevin,ou=People,dc=openldap,dc=example,dc=com" mech=SIMPLE ssf=0
665732a0 conn=1121 op=1 RESULT tag=97 err=0 text=
665732a0 conn=1121 op=2 UNBIND
665732a0 conn=1120 op=2 SRCH base="ou=Group,dc=openldap,dc=example,dc=com" scope=2 deref=0 filter="(&(objectClass=posixGroup)(cn=corevpn)(memberUid=%u))"
665732a0 <= mdb_equality_candidates: (cn) not indexed
665732a0 conn=1121 fd=15 closed
665732a0 <= mdb_equality_candidates: (memberUid) not indexed
665732a0 conn=1120 op=2 SEARCH RESULT tag=101 err=0 nentries=0 text=
665732a0 conn=1120 op=3 UNBIND
665732a0 conn=1120 fd=14 closed
==为什么是memberUid=%u 而不是memberUid=kevin???==
2024-05-29 20:35:04 us=599688 122.241.13.157:59447 PLUGIN_CALL: POST /usr/lib/openvpn/plugins/openvpn-auth-ldap.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
2024-05-29 20:35:04 us=599712 122.241.13.157:59447 PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/openvpn/plugins/openvpn-auth-ldap.so
2024-05-29 20:35:04 us=600090 122.241.13.157:59447 TLS Auth Error: Auth Username/Password verification failed for peer
Wrong creditials try again
memberUid=%u
而不是 memberUid=kevin
。根据我对openvpn配置手册的理解,组
SearchFilter
属性允许您在指定的BaseDN
中过滤组,但不是基于使用%u
处理过的过滤器。
将从
BaseDN
中筛选出来的群组将被检查并比较,以查看它们的 MemberAttribute
属性中是否包含用户的信息。
如果你想使用
posixGroup
,你需要将RFC2307bis
设置为false。 (此 rfc 用于 groupOfNames
/ groupOfUniqueNames
的使用,它存储用户 dn 而不是 memberuid 作为 ldap 组内的引用)
尝试这个配置:
<LDAP>
URL ldap://127.0.0.1:389
BindDN cn=admin,dc=openldap,dc=example,dc=com
Password "secret"
Timeout 60
FollowReferrals yes
TLSEnable no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=openldap,dc=example,dc=com"
SearchFilter "(uid=%u)"
RequireGroup true
<Group>
BaseDN "ou=Group,dc=openldap,dc=example,dc=com"
RFC2307bis false
SearchFilter "(&(objectClass=posixGroup)(cn=corevpn))"
MemberAttribute memberUid
</Group>