我的用户通过 OpenVPN AS 进行了很好的身份验证,使用 FreeIPA 上的 LDAP 身份验证。
现在我想限制 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。仍然没有工作。