2011-04-03 153 views
3

我正在嘗試將LDAP支持添加到使用窗體身份驗證的現有ASP.NET網站。這不是一個大問題,我只是建立一個簡單的登錄對話框(普通的HTTP POST),查詢LDAP目錄並通過表單身份驗證票證登錄用戶。ASP.NET窗體身份驗證+ NTLM + LDAP

通過NTLM(集成Windows身份驗證)自動獲取用戶憑證而不需要登錄對話框(例如將ASP.NET Windows身份驗證與同一Active Directory中的計算機一起使用時獲得的內容)將非常好。有沒有簡單的方法來做到這一點(請記住,我不能使用Windows身份驗證爲我的ASP.NET應用程序,並且服務器不在Active Directory域中,我需要能夠手動查詢LDAP目錄)?或者我是否必須手動執行所有LDAP握手/挑戰/響應呢?

感謝您的幫助, 〜saxx

+0

maybe [this](http://msdn.microsoft.com/en-us/library/ff650307.aspx)可以提供幫助。它是構建自定義元會員供應商的指南,因此您可以獲得所有的會員資格功能。 – Menahem 2011-04-03 14:04:07

回答

1

我這樣做只是這對我的企業內部網在這裏。這些是我使用的步驟...

  • 創建一個登錄頁面(login.aspx看起來不錯)&設置Web應用程序的表單身份驗證。將授權設置爲拒絕匿名。這意味着任何嘗試使用您的應用程序將導致用戶被重定向到您的登錄頁面,如果他們沒有一個驗證票。
  • 現在是重要的一步。在IIS中,將應用程序設置爲僅允許匿名。在您的登錄頁面上將此更改爲僅Windows集成。現在發生的情況是當用戶退回到登錄頁面時,IIS強制進行NTLM身份驗證。我們現在在頭中有用戶名。
  • 第2個重要步驟。在page_load方法中添加:

    FormsAuthentication.RedirectFromLoginPage(Request.ServerVariables["Logon_user"], false); 這是做什麼取的用戶名IIS將始終給我們,並將放入一個窗體身份驗證票。

當然有一定的整理你可能想要做的,或許添加註銷功能,或剝離的用戶名的域名。

Simon

+0

非常感謝解決方案。對於_very_遲到的回覆感到抱歉。 – 2012-02-17 11:51:03

+0

@Simon,關於你的第二步,你如何將Windows集成模式設置爲登錄頁面? – notlkk 2013-07-09 18:11:04