我對其他人如何編碼感興趣,因爲我要麼沒有正確理解它,要麼我錯過了某些東西,或者甚至我做得很對!通過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