我对其他人如何编码感兴趣,因为我要么没有正确理解它,要么我错过了某些东西,或者甚至我做得很对!通过LDAP进行身份验证
首先,这不是LDAP的Active Directory实例,它的OpenDS除了某些语法上的差异应该没什么关系。
所以假设我有我的树结构的设置是这样的:
-dc=somedomain,dc=com
-uid=rootuser
-ou=Group1
-uid=username1
-uid=username2
-ou=Group2
-uid=username3
-uid=username4
为了作为“rootuser”我需要我的时候我创建到System.DirectoryServices.DirectoryEntry通过完全合格的用户名进行身份验证对象,在这种情况下:
UID = rootuser,DC = somedomain,DC = com的
,但在树中的任何其它用户我必须提前知道LDAP路径追加到用户名,让他们通过验证。因此,例如,这将失败:
UID = USERNAME1,DC = somedomain,DC = com的
,但是这将工作:
UID = USERNAME1,DC = somedomain,DC = COM,OU =组别1
所以我的问题是,当你不知道在登录时用户属于哪个特定组来构建该路径时,你如何处理这个问题?我唯一可以做到的方法是将初始调用设为'rootuser',这样我就可以访问整个树,然后使用System.DirectoryServices.DirectorySearcher为特定用户扫描它(即用户名1)
using (DirectorySearcher searcher = GetDirectorySearcher()) {
searcher.Filter = "(&(objectClass=person)(uid=" + userName+ "))";
SearchResult result = searcher.FindOne();
return result.GetDirectoryEntry().Path;
}
在那一点上,我有我想要登录的用户的路径,我可以继续进行实际的身份验证。我在这里的基地,或者这通常是如何完成的?
谢谢!
System.DirectoryServices是.NET框架的一部分,对不起,如果不清楚。所以这听起来像是我根据你所说的正确地做了。是的,uid是这个对象的唯一标识符,谢谢 – snappymcsnap 2011-05-26 01:15:25