raz*_*z3r 7 perl ldap active-directory
我有一个绑定到LDAP服务器的Perl脚本并检索所有用户.到目前为止,它运作良好,但我想过滤搜索,以收集所有组.一旦我拥有所有组,用户就可以选择其中一个组,我将仅向他显示属于该组的用户.我该怎么办这些疑问?我试过这个:
my $mesg = $ldap->search(
base => $base,
filter => '(objectclass=user)',
attrs => ['memberOf']
);
Run Code Online (Sandbox Code Playgroud)
但是后来有些组重复了,我将不得不手动过滤结果(我想避免这种情况).那么第二个查询呢?
cn获取所有组的过滤器是" (objectclass=group)"您只能在一个organizationalUnit(scope =>'one')或所有子组织(scope =>'sub')中检索组
$mesg = $ldap->search( filter=>"(&(objectclass=group)(cn=the group choosen by the user)",
base=>"ou=Monou,dc=societe,dc=fr"
scope=>"sub"
attrs=> ['cn', 'member']);
@entries = $mesg->entries;
foreach $entry (@entries)
{
$entry->dump;
@member = $entry->get_value("member"); # returns all members
}
Run Code Online (Sandbox Code Playgroud)
有关更多帮助,请参阅perl-ldap简介
编辑
所以你要找的过滤器是:
(&(objectClass=user)(memberof=CN=Mongroupe,OU=MonOU,DC=societe,DC=fr))
Run Code Online (Sandbox Code Playgroud)