2011-10-28 156 views
4

如果您正在構建一個圍繞HttpListener的自託管網頁,您如何以安全的方式處理身份驗證?我不想使用基本身份驗證,因爲它以明文形式傳遞憑證。我知道,摘要是另一種選擇,基於HttpListener的自託管網站 - 如何處理身份驗證?

 listener = new HttpListener(); 
     listener.Prefixes.Add(url); 
     listener.AuthenticationSchemes = AuthenticationSchemes.Digest; 
     listener.Start(); 

它是否足夠安全,什麼是標準/最佳做法,實際上抓住了用戶名/密碼和驗證呢?

在這種情況下,默認情況下沒有web.config或主機環境。

+0

最好的做法是使用HTTPS/SSL。你是否在避免使用IIS並使自己的Web服務器像組件一樣?我可以問爲什麼只是爲了好奇? :) –

+2

我正在使用響應式擴展和事件循環(比如node.js如何工作),在大量事件驅動和實時Web應用程序(想象一個聊天服務器,但具有更多功能)。也許我會以某種方式將它整合到IIS中,但現在它只是一個簡單的骨骼項目。至於使用可以用HttpListener配置的SSL,但是如何處理用戶憑證呢? –

+0

很容易想象爲什麼:一款不需要IIS的應用程序,如WinForms應用程序,可以暴露Web界面,只需要使用Web瀏覽器即可訪問該應用程序。 –

回答

2

對HttpListener使用身份驗證意味着讓Windows使用其內置身份驗證系統(即ActiveDirectory)爲您執行身份驗證。這意味着您需要爲您的用戶創建域帳戶以進行摘要式身份驗證。這是你想要的嗎?如果你想做自己的定製認證,這是一個更復雜的問題。除非你說這就是你想要做的,否則我不會進入如何去做。

+0

謝謝,這不是問題。我打算最有可能使用摘要,至少現在是如此。我只是擔心它是否足夠安全。你知道任何解釋如何使用摘要認證+活動目錄的鏈接嗎?或者,消化是否可以做到這一點? –

+0

開箱即用。大致發生的情況是,如果您設置了HttpListener並且不允許進行匿名身份驗證,則HttpListener將向未經身份驗證的用戶返回401,並且頭將啓動身份驗證協議。瀏覽器會彈出一個登錄對話框。用戶輸入憑證。服務器將嘗試使用ActiveDirectory對用戶進行身份驗證。憑證必須有效,並且帳戶需要以這種方式登錄的任何權限(我不記得需要哪些權限,但它在某處存在記錄。) –

+0

您的代碼根本沒有看到請求直到用戶通過認證。 –

1

我會考慮實施對基於聲明的安全性的支持。您將不得不處理安全令牌,但實際的用戶身份驗證可以「外包」給外部身份提供商。

您可能可以利用Windows Identity Foundation(WIF)來處理大部分工作。

相關問題