1
如何做用戶一個Perl的LDAP搜索/認證是在訪問組的屬性,或者它的子羣?Perl的LDAP搜索用戶是一個CN屬性
所有用戶信息(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
(亞組具有它自己獨特的成員屬性)
驗證腳本的想法:
- 用他的登錄名/密碼(完成)綁定用戶。
- 如果成功的話,創建用戶的DN像
uid=$username,ou=Users,o=company,c=com
(完成) - 通過
cn=Site Full Access,ou=Access,o=company,c=com
屬性迭代,如果遇到一羣,搜索用戶的DN這個羣體太
裏面比較它們的用戶的DN
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修改。
謝謝。這實際上與我最後做的非常相似,但是讓我意識到我做出的一些微小的性能錯誤。另外,我使用'if($ uniquemember =〜/^cn = /)'來檢查它是否是一個組。這可能比用ldap-> search打開每個唯一成員要快一些。 – yosh
它可以工作,但如果有人創建一個像cn = john這樣的人物對象呢? – user1126070