我有一個Web應用程序使用我們的活動目錄針對Windows身份驗證運行。我有一個新的要求,即通過Active Directory條目獲取一些個人信息。訪問這些信息最簡單的方法是什麼?活動目錄:檢索用戶信息
回答
直接通過一個DirectoryEntry訪問用戶似乎是最直接的方法。我從我的第一個AD相關項目中瞭解到一些與AD相關的花絮:
- 在URI中,以小寫寫LDAP。否則,你會得到一個神祕的錯誤。我花了一天多的時間在這個令人沮喪的問題上......
- 要清除單值屬性,請將其設置爲空字符串,而不是空值。空導致異常。
- 要清除多值屬性,請使用DirectoryEntry.Property.Clear()方法。
- Active Directory架構參考將說明一個值的數據類型以及它是多值還是單值。
- 您不需要在Directoryentry上手動刷新RefreshCache(),但是如果您曾經使用它並指定要緩存的屬性,請知道它將來不會自動檢索任何其他屬性。
- 在任何時候使用System.DirectoryServices中的類時都會拋出COMException。密切關注這些嘗試塊。不要以爲任何事情都是安全的。
如果你不知道它的路徑,你可能需要使用DirectorySearcher來獲取你的用戶的目錄條目(你不會,只要讓他登錄)。使用它很容易,但要小心LDAP語法中的怪癖;即不得不編碼非ASCII(和其他?)字符。您使用的搜索字符串可能類似於:(&(sAMAccountName = whatever)(class = user))。這是我的頭頂,可能稍微不正確。
Active Directory schema reference將會有用。請理解可以修改和擴展架構(例如,安裝Exchange將向用戶添加郵箱信息)。
AD Explorer是一個有用的工具,您可以使用它進行調試和低級AD數據管理。當我知道我要設置哪個屬性,但無法在AD管理工具中找到正確的對話框時,我發現它很有用。
我已經使用標準LDAP庫從Active Directory服務器檢索信息,但是您必須通過LDAP服務器的模式驗證您需要的數據是否可用。一般來說,您可以獲取存儲在InetOrganizationalPerson中的任何信息以及與其所屬組織有關的大部分信息。
看一看System.DirectoryServices命名空間:
+1爲一體的現代化的答案。 – 2012-10-31 16:55:30
您可能會發現下面的代碼片段可用作啓動器。
public static bool IsUserInGroup(string lanid, string group)
{
DirectoryEntry entry = new DirectoryEntry("LDAP://" + LDAPPATH);
if(entry != null)
{
[email protected]"LDAPUSER";
entry.Password="LDAPPASSWORD";
DirectorySearcher srch = new DirectorySearcher(entry);
srch.Filter = String.Format("(&(objectClass=person)(sAMAccountName={0}))", lanid);
srch.PropertiesToLoad.Add("memberOf");
SearchResult result = srch.FindOne();
if(result != null)
{
if(result.Properties.Contains("memberOf"))
{
string lookfor = String.Format("cn={0},", group.ToLower());
foreach(string memberOf in result.Properties["memberOf"])
{
if(memberOf.ToLower().StartsWith(lookfor))
return true;
}
}
}
return false;
}
throw new Exception(String.Format("Could not get Directory lanid:{0}, group{1}", lanid, group));
}
- 1. 拉活動目錄用戶信息
- 2. 檢索當前活動目錄用戶詳細信息C#Web Api
- 3. 爲新活動檢索多個信息
- 4. 檢索用戶信息,並檢查是否在使用VB.NET的活動目錄中的組的成員
- 5. 無法通過目錄api檢索domain_public用戶信息
- 6. 獲取用戶活動目錄詳細信息
- 7. 將地址信息添加到活動目錄用戶
- 8. 託管後未獲取活動目錄用戶詳細信息
- 9. 需要在活動目錄中顯示用戶的信息
- 10. 讀書交流活動目錄信息
- 11. 從活動目錄中檢索用戶列表
- 12. 僅檢索活動目錄上的已啓用帳戶
- 13. MVC5如何從Azure活動目錄中檢索所有用戶
- 14. 活動目錄 - 獲取新創建的帳戶詳細信息
- 15. 檢索用戶在活動重新啓動時的詳細信息
- 16. Facebook - 使用ID檢索用戶信息
- 17. 使用C從活動目錄訪問用戶信息使用C
- 18. 使用Fb檢索用戶登錄信息
- 19. 從auth組件檢索用戶信息
- 20. 檢索特定用戶ID的信息
- 21. 檢索信息從用戶AlertDialog
- 22. 檢索Facebook用戶標記的信息
- 23. 從ID檢索用戶信息
- 24. facebook php sdk:檢索用戶信息
- 25. 檢索Regeistered用戶信息 - asp網站
- 26. 檢索facebook的用戶信息
- 27. 從OpemAM中檢索用戶信息
- 28. Infragistics Ultralistview MouseHover檢索用戶信息
- 29. 檢索信息
- 30. android:使用OAuth登錄Gmail以檢索帳戶詳細信息
剛剛完成一些代碼基本上是你說的。使用DirectoryHarcher,並獲取我需要的信息。幸運的是,我只需要檢索非常基本的信息。 – 2008-09-25 09:37:45
對我來說,寫小寫的ldap拋出了一個COMException。 – 2013-04-24 08:48:02