如何对作为访问组或其子组中的属性的用户进行 Perl LDAP 搜索/身份验证?
所有用户 (UID) 位于:
ou=Users,o=company,c=com
访问组是:
cn=Site Full Access,ou=Access,o=company,c=com
访问组具有用户和子组作为属性,例如:
uniquemember | uid=usernameA,ou=Users,o=company,c=com
uniquemember | uid=usernameB,ou=Users,o=company,c=com
uniquemember | uid=usernameC,ou=Users,o=company,c=com
uniquemember | cn=Site Full Access Employees,ou=Access,o=company,c=com
(子组有自己的 uniquemember 属性)
认证脚本思路:
- 用他的登录名/密码绑定用户(完成)。
- 如果成功,创建用户的 DN,如
uid=$username,ou=Users,o=company,c=com
(完成) - 遍历 的属性
cn=Site Full Access,ou=Access,o=company,c=com
并将它们与用户的 DN 进行比较 - 如果遇到一个组,也在这个组内搜索用户的DN
我正在使用 Net::LDAP,但没有太多代码可以显示,因为什么是非常标准的。这是 uniquemember 属性的列表:
my $mesg = $ldap->bind ($user_dn, password=>"$pass");
$mesg->code && return undef;
$mesg = $ldap->search(base=>$ldap_access_full, filter=>"(objectclass=*)");
$mesg->code && return undef;
my @entries = $mesg->entries;
my $entry;
foreach $entry ( @entries )
{
if ($entry->exists('uniquemember'))
{
my $ref = $entr->get_value('uniquemember', asref=>1);
for my $uid (@$ref)
{
print $uid . "<br/>";
}
}
}
这给了我一组用户 DN,但也给了我必须在某些递归函数中列出和比较的组。
我该如何处理?也许还有另一种方法来检查密码和访问组,用户仍然是访问组或其子组的属性?我无法进行任何 LDAP 修改。