如何绑定用户并确保他们在正确的组中?

How to bind a user and ensure they are in the correct group?

我想我要做的很简单,我想设置 ldap,以便传入的绑定检查密码是否正确以及用户是否是特定组的成员。

运行 以下查询产生以下结果

ldapsearch -x -LLL -H ldap:/// -b uid=myname,ou=users,dc=example,dc=com dn memberof

结果

dn: uid=myname,ou=users,dc=example,dc=com
memberOf: cn=admin,ou=groups,dc=example,dc=com

我试过以下查询

ldapsearch -x -H "ldap://localhost" -D "(&(cn=My Name)(memberOf=cn=admin,ou=groups,dc=example,dc=com))" -W -b "dc=example,dc=com"

ldapsearch 不断抛出以下错误

ldap_bind: Invalid DN syntax (34)
        additional info: invalid DN

我做错了什么?

您的搜索查询中有 2 个问题需要解决:

  • filter 部分应放在所有选项之后和 attributes 列表之前(如果有的话)。
  • -D 选项 需要一个参数,一个 bind dn 以绑定到 LDAP 目录。

换句话说:ldapsearch -x -H <ldapuri> -D <binddn> -W -b <basedn> <filter>

假设您可以使用此绑定 dn cn=manager,dc=example,dc=com,您应该得到如下所示的查询:

ldapsearch -x -H "ldap://localhost" -D "cn=manager,dc=example,dc=com" -W -b "dc=example,dc=com" "(&(cn=My Name)(memberOf=cn=admin,ou=groups,dc=example,dc=com))"

https://linux.die.net/man/1/ldapsearch