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

How to query LDAP group membership with curl?

我想在命令行上使用 curl 来检查 $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"

不幸的是,那个电话需要相当长的时间,而且 returns 有很多我不感兴趣的信息。您知道是否存在更有效的方法吗?

你可以试试:

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))"

哪个会

  • 对于过滤器:仅检索具有 sAMAccountName=$USERmemberOf=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