簡體   English   中英

C#中的ActiveDirectory入門

[英]Getting started with ActiveDirectory in C#

我正在研究用C#和WPF編寫的.NET應用程序。 在此應用程序中,我們將向Active Directory服務器驗證用戶身份。 最后,我們可能也想支持其他LDAP實現,所以如果我可以構建它而不是特定於ActiveDirectory的那將是一個優勢。

開始使用它的最佳方法是什么? 我應該檢查一下有什么好的資源嗎? 我聽說.NET中有一個用於處理與Active Directory通信的庫 - 或者是否有一個通用的LDAP庫? 任何建議表示贊賞!

注意:我使用的是.NET 3.5。

通過添加System.DirectoryServices.AccountManagement命名空間,.NET 3.5使其變得非常容易。 除非你不在.NET 3.5上,否則我會直接進入這個命名空間。 像往常一樣, 代碼項目很多示例用途

簡單示例,驗證用戶:

var pc = new PrincipalContext(ContextType.Domain, "MyDomain", "DC=MyDomain,DC=com");
return pc.ValidateCredentials(username, pass);

如果可能的話,我會避免使用System.DirectoryServices.AccountManagement。 它肯定會讓事情變得更容易,但我遇到了很多問題(例如它偶爾會忽略指定的端口)而且它實際上只是System.DirectoryServices的一個輕量級包裝器。 雖然你可以幸運地使用它的其他LDAP目錄,但它肯定不是為它而設計的。

我建議使用System.DirectoryServices.Protocols程序集。 開始使用起來有點困難,並且還需要更多的努力,但是你會發現它更靈活,性能更好,而且更符合標准。 我使用它對許多不同的目錄,包括AD,取得了很大的成功。

MSDN有一篇精彩的介紹文章 ,將涵蓋您可能需要的大多數場景。

如果您使用的是.NET 3.5,請務必查看System.DirectoryServices.AccountManagement命名空間 - 它使事情變得比以前容易得多!

另請參閱此MSDN文章管理.NET Framework 3.5中的目錄安全主體 - 強烈推薦!

如果您需要保持“通用”並支持其他LDAP目錄,您可能還需要查看System.DirectoryServices.Protocol簡介,它是Microsoft .NET程序集和命名空間,用於處理較低級別的LDAP調用,並且應該可以正常工作針對任何LDAP兼容目錄(Sun,Novell等)

您需要使用System.DirectoryServices程序集。 以下是一些示例: 使用.NET類和LDAP查詢查詢Active Directory

您可以參考我的基於ActiveRecord模式的OSS項目如下(因為它是開源的,您可以找到如何使用DirectoryEntry操作AD,DirectoryEntry不僅支持LDAP協議,還支持IIS,WIN等,所以我開發這個lib):

using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”))
{
     if(userObject.Email == "example@landpy.com")
     {
          userObject.Email = "mv@live.cn";
          userObject.Save();
     }
}

https://landpyactivedirectory.codeplex.com/documentation

而且你會發現使用它很容易操作AD,如果你對它不感興趣,請忽略我的答案。 有關AD的任何問題請與我聯系:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM