2010-10-22 92 views
1

我有一個域和端口號(636)以及用戶名和密碼。通過SSL查詢AD域

我試圖找出一個辦法通過安全LDAP連接到該廣告並獲得了用戶的給定名稱「,「SN」,「郵件」,而且很可能一些自定義屬性。

但是我不知道如何在C#中做到這一點。

我認爲微軟可能對這個可用的方法已經但是我會推遲到大家。

最終用戶體驗將是:見登錄界面,輸入用戶名和密碼,這些憑據通過LDAP發送和用戶信息返回到我的web應用程序,然後我登錄他們如果一切順利...儘管我不知道失敗的嘗試會是什麼樣子,所以我可以否認它們。有任何想法嗎?

請包括代碼示例,以便我能理解實現,謝謝!

+2

很明顯,你甚至沒有試圖尋找這個你自己(我想知道,我爲此甚至一個月前建立一個類庫)。請詢問具體問題的答案,而不是整個解決方案。 – Brad 2010-10-22 18:15:25

+2

谷歌本身的第一個鏈接應該會給你所有你需要的信息http://www.c-sharpcorner.com/uploadfile/ankithakur/login_using_active_directory04052006061801am/login_using_active_directory.aspx – InSane 2010-10-22 18:16:18

+0

@Shogun,你發現了什麼新的鏈接@ InSane發佈? – Brad 2010-10-22 18:26:31

回答

3

你甚至嘗試google

編輯

抱歉,hubub和snarky響應。我認爲你遇到的問題是你沒有完全問這個問題 - 無論是在這裏還是在谷歌。無論如何,你不需要在這裏舔C#代碼。您只需要配置您的Web應用程序即可將AD用作會員提供商。你需要一個連接字符串[得到這個權利是最難的部分]:

<connectionStrings> 
    <add name="MyAd" 
     connectionString="LDAP://adserver/OU=Users" 
     /> 
</connectionStrings> 

而且一個成員提供:

<membership defaultProvider="AdProvider"> 
     <providers> 
      <add 
       name="AdProvider" 
       type="System.Web.Security.ActiveDirectoryMembershipProvider, 
        System.Web, Version=2.0.0.0, 
        Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
       connectionStringName="MyAd" 
       applicationName="ItRemoteHelpdesk" 
       enablePasswordReset="false" 
       /> 
     </providers> 
    </membership> 

然後用戶可以使用他們的正常的用戶名@域名和密碼登錄。

+0

@Shogun,認真!!您只是要求我們爲您製作**解決方案**,而不是回答*問題*。如果你想要的只是一個回答的問題,那麼是的,這是可能的。 – Brad 2010-10-22 18:14:20

+0

@Brad,我沒有,我只是要求提供代碼示例以及關於使用什麼C#庫的信息......並且詢問SO的意義在於幫助添加到網站並獲得來自用戶的建議,例如一些陷阱人們可能會遇到,實時的建議......哇,只是..哇.. – BigOmega 2010-10-22 18:26:37

+0

@Shogun,你的問題只是太寬泛。我寫了一個完整的Dll來定製.NET的AD認證。這會適合發佈嗎?可能不會。 – Brad 2010-10-22 18:29:49

1

System.DirectoryServices.AccountManagement是用於更新的非LDAP AD身份驗證的.NET dll。

試試這個網站有一個良好的出發點與代碼示例:

http://www.codeproject.com/KB/system/usingAccountManagement.aspx

+0

它必須是安全的LDAP ..所以我猜'非-LDAP「沒有使用安全LDAP,對吧? – BigOmega 2010-10-22 18:36:43

+0

@Shogun,你可以在創建Context時使用'ContextOptions'枚舉(指向DC的鏈接)來指定你需要SSL http://msdn.microsoft.com/zh-cn/library/system.directoryservices .accountmanagement.contextoptions.aspx – Brad 2010-10-22 18:41:33

+0

@布拉德,好的謝謝..對不起,因爲如此活潑,這是一個漫長的一週.. – BigOmega 2010-10-22 18:49:02

0

你一定要檢查出.NET 3.5 System.DirectoryServices.AccountManagement命名空間由布拉德的建議。

爲了得到一個好頭如何使用它啓動,請閱讀此MSDN雜誌文章:Managing Directory Security Principals in the .NET Framework 3.5

本文並討論如何安全地(使用SSL)多次連接到你的AD域,以及如何例如創建用戶或檢索用戶信息。我認爲仔細閱讀該文章並嘗試使用代碼示例應該能夠幫助您瞭解如何執行所需的操作。

更新:很明顯,在S.DS.AM所有這些方法需要你是認證對廣告。新課程還爲用戶憑據的非常簡單的驗證(如該文章中我掛):

// establish context 
PrincipalContext domain = new PrincipalContext(ContextType.Domain); 

// determine whether a user can validate to the directory 
bool validated = domain.ValidateCredentials("user1", "Password1"); 
+0

我很困惑。我試圖讓AD用戶通過我的網絡應用程序以其用戶名和密碼登錄到客戶端AD。這看起來像我可以查找任何用戶沒有密碼...我怎麼才能認證某人?我如何獲得訪問權限,一些管理員密碼?更多的閱讀我必須做...這似乎太......太複雜了! – BigOmega 2010-10-23 02:15:50

+0

@Shogun:當然,如果你已經通過身份驗證,你只能看到某人。閱讀我鏈接到的文章!它還向您展示如何輕鬆驗證AD憑據,以及如何登錄給定用戶。只有**登錄**時,他可以做所有其他的東西,當然! – 2010-10-23 06:53:47

+0

哦...客戶給了我一個測試用戶,但沒有管理員帳戶或類似的東西,我想我需要回去找一個?或者我可以驗證一個普通用戶?請澄清,我很困惑這裏.. – BigOmega 2010-10-25 12:57:39