我的用户使用FreeIPA上的LDAP身份验证通过OpenVPN AS很好地进行身份验证。
现在我想限制OpenVPN强制它们属于某个组。
我已经在FreeIPA中创建了一个用户组,并将OpenVPN更改为具有“ memberOf = CN = myGroup,CN = groups,CN = accounts,DC = mgmt,DC = company,DC = uk”的“其他LDAP要求” “
但是当我现在尝试进行身份验证时,我被拒绝访问,并且在openvpn日志中出现此错误:
2019-11-26T09:38:12+0000 [stdout#info] VPN Auth Failed: u"LDAP exception on ldaps://endpoint.free.ipa.internal/ (facility='search (u'cn=users,cn=accounts,dc=mgmt,dc=company,dc=uk', 2, u'(&(uid=myUser)(memberOf=CN=myGroup,CN=groups,CN=accounts,DC=mgmt,DC=company,DC=uk))')'): **user not found that meets specified requirements**: memberOf=CN=myGroup,CN=groups,CN=accounts,DC=mgmt,DC=company,DC=uk: auth/authldap:178,python2.7/threading:774,python2.7/threading:801,python2.7/threading:754,_threads/_threadworker:46,_threads/_team:190,python/threadpool:250,python/threadpool:266,python/context:122,python/context:85,auth/authldap:138,auth/authldap:178,util/error:67,util/error:48" [None]
如果我尝试(我认为是)命令行中的等效LDAP搜索,则可以正常工作:
ldapsearch -x -D "uid=admin,cn=users,cn=accounts,dc=mgmt,dc=company,dc=uk" -W -H ldap://localhost -b "cn=users,cn=accounts,dc=mgmt,dc=company,dc=uk" '(&(uid=myUser)(memberOf=cn=myGroup,cn=groups,cn=accounts,dc=mgmt,dc=company,dc=uk))'
返回用户,甚至列出他们的memberOf属性:
...
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=mgmt,dc=company,dc=uk
memberOf: cn=myGroup,cn=groups,cn=accounts,dc=mgmt,dc=company,dc=uk
...
所以不确定我在OpenLDAP中做错了什么。
我读到memberOf只能追溯使用,因此我删除了myUser并将其重新添加到myGroup中。仍然没有用。
啊找到了。
OpenVPNAS使用匿名绑定来连接到FreeIPA以便对人员进行身份验证。使用匿名绑定,不允许查看组成员身份!
解决方案是将OpenVPNAS更改为以管理员用户身份进行绑定。现在可以正常工作。