我试图通过LDAP查询在中查找用户。基本上,我是这样搜索用户的:
Search DN: dc=mydomain, dc=com
Filter: (sAMAccountName=USER) where USER is replaced with the provided username.现在,如果用户只是没有域的用户名(用于ex )。“乔”)这个很好。然而,我收到它们的形式(域名\用户名,为ex。“myDomain\Joe”,显然搜索失败了。
我看到了两种方式:
我不是LDAP专家,我甚至不知道是否可以在搜索过滤器中使用正则表达式。
有没有人知道这是可能的,怎么做的?
我不能预先处理用户名来删除域名。这是不能改变的,因为它都是一个大系统的一部分。
发布于 2010-05-20 12:27:29
不可能使用不同的过滤器。用户帐户没有带有域名的属性,因此不能使用域作为参数来构造查询。
在服务中,只包含来自域的信息,DC是该域的控制器。如果您与森林中的其他domianst有信任关系,为了从不同的域获取有关用户的信息,您应该从该域与LDAP服务联系。
正确的解决方案:从搜索过滤器中丢弃域名。属性sAMAccountName在域上是唯一的。
发布于 2010-05-20 20:09:12
如果您在*nix框中,请使用openldap实用程序,搜索非常简单。示例
ldapsearch -h servername -b "dc=domain,dc=com" -D bindid@domain.com -W -x sAMAccountName=usernameuserPrincipalName: username@domain.com
我不确定你是否可以在过滤器内使用regex。编写一个将输出转储到文件并实现regex的脚本。
发布于 2010-05-20 20:17:45
LDAP支持通配符,但我不知道regex (可能有一些特定的实现)
您可以使用以下筛选器:
(|(sAMAccountName=USER)(sAMAccountName=*\USER))它将匹配用户名或某些字符、反斜杠和用户名。
取决于您使用的工具将如何或是否需要避免反斜杠。
https://serverfault.com/questions/143685
复制相似问题