如何使用curl查询LDAP组成员身份?

Lar*_*der 2 curl ldap ldap-query

我想curl在命令行上使用a检查是否$USER是LDAP组的成员$GROUP

这有效:

curl --user $CREDS \
     "ldaps://ldap.foo.com/DC=ads,DC=foo,DC=com??sub?(sAMAccountName=$USER)" \ 
   | grep -a "memberOf: CN=$GROUP,OU=Distribution,OU=Groups,DC=ads,DC=foo,DC=com"
Run Code Online (Sandbox Code Playgroud)

不幸的是,该呼叫需要花费一些时间,并且返回许多我不感兴趣的信息。您知道是否存在更有效的方法吗?

Est*_*ban 6

您可以尝试:

curl --user $CREDS \
     "ldaps://ldap.foo.com/DC=ads,DC=foo,DC=com?memberOf?sub?(&(sAMAccountName=$USER)(memberOf=CN=$GROUP,OU=Distribution,OU=Groups,DC=ads,DC=foo,DC=com))"
Run Code Online (Sandbox Code Playgroud)

哪个会

  • 对于过滤器:仅检索具有sAMAccountName=$USERAND的用户memberOf=CN=$GROUP,OU=Distribution,OU=Groups,DC=ads,DC=foo,DC=com(与grep所有用户属性上的命令相比,过滤器将成为过滤服务器端)

  • 对于memberOf添加项(在之前?sub),指定您只希望检索memberOf属性。

    如果过滤器更改成功了,请尝试仅检索dn例如以限制输出,因为如果未指定属性,则将返回每个属性

有关更多信息:https : //docs.oracle.com/cd/E19396-01/817-7616/ldurl.html

  • 如果您让 `...?memberOf?sub?...` 它将检索用户所属的每个组。如果您不需要此信息,这就是我在第二点上说的原因:如果过滤器更改成功,请尝试仅检索 dn 以限制输出。该请求类似于:“ldaps://ldap.foo.com/DC=ads,DC=foo,DC=com?dn?sub?...”。由于 DN 应始终返回,因此不会添加任何其他信息 (2认同)