2013-10-12 28 views
0

我知道ASP.NET支持各種身份驗證模型,如Windows,Forms,護照和最近的聲明。什麼是ASP.NET世界中調用的身份驗證模型

我有一個提示用戶輸入用戶名/密碼登錄一個asp.net,它然後比較與應用程序的數據庫用戶表中的條目,輸入用戶名/密碼。所以,我的問題是,這種認證模式的術語/名稱是什麼?在上面提到的ASP.NET支持的身份驗證模型中,這些落在哪裏?

我也看到很多,我知道互聯網網站使用同樣的方法。

(注:I'ev保持我的應用程序簡單,當然它有用戶registeration /添加頁面,配置表後,用戶等)

+0

表單身份驗證 –

+0

但我沒有在Web中設置'''。config – Dan

+0

你是否讓用戶爲每個頁面請求輸入密碼?如果沒有,你以某種方式存儲他們的認證值。你最近怎麼樣? –

回答

5

Windows,Forms,Passport,Claims等。身份驗證是BROWSER身份驗證方案。它們是瀏覽器與服務器通信以呈現證書的機制。他們與數據庫或任何其他存儲機制無關(呃,主要是......)。這些只是實現細節。

FormsAuthentication使用cookie來存儲的加密值,告訴該用戶已經被認證服務器。用戶如何通過身份驗證,通過與數據庫進行比較,使用服務等進行身份驗證。如果最終結果是發佈了FormsAuthentication cookie,則這些都無關緊要。

WindowsAuthentication與瀏覽器和Web服務器進行通信以共享Kerberos票證以驗證身份有關,或者用戶將用戶名密碼輸入到服務器請求瀏覽器彈出的框中。在這種模式下,服務器本身管理認證發生的方式,而不涉及應用程序。

BasicAuthentication使用HTTP標頭以明文發送密碼,那麼,在技術上這是一個編碼的密碼,但它是衆所周知的,因此任何人可以unencode它。同樣,它存儲數據的實際方法取決於服務器,而服務器在沒有應用程序知識的情況下執行此操作。重要的部分是它通過HTTP頭完成。

同樣是其他類型的認證的,它們都是在cookie和/或報頭機制只是變化也是如此。

的這裏的一點是,認證是對任何給定的HTTP請求如何識別用戶是在服務器誰,最終的應用程序。不是數據如何存儲或驗證。因此,由於您沒有告訴我們服務器和瀏覽器是如何通信的,我們無法告訴您您的身份驗證是如何定義的,儘管幾乎可以肯定它是FormsAuthentication的變體。

編輯:

只是一點點的歷史課。它被稱爲FormsAuthentication的原因是因爲身份驗證系統不使用瀏覽器中的彈出對話框輸入憑據,但通常網頁提供HTML表單供用戶輸入憑證。瀏覽器根本不涉及認證過程,除了按要求傳遞cookie之外。

它應該更準確地稱爲「CookieBasedAuthentication」,但名稱已卡住,並可能保持原樣。 ASP.NET提供了一個名爲FormsAuthentication的特定實現,但您可以使用任何基於cookie的身份驗證方案執行相同的操作(儘管我不建議自己滾動,但幾乎肯定會出現安全性錯誤)。

有人認爲在Session中存儲標誌就足夠了。在任何情況下都不要使用Session來存儲身份驗證信息。會話cookie未加密,很容易被盜取和/或欺騙。使用衆所周知的方法。

+0

很棒的回答。這是絕對正確的。感謝您抽出寶貴時間詳細瞭解。 – JHixson

1

所有要求用戶輸入用戶名的身份驗證方法和您維護的密碼是表單身份驗證的一種形式。這是因爲您要求他們填寫表單(用戶名和密碼)以驗證它們。

瞭解更多關於它HereHere.

編輯:由空軍終於人提供的答案是比我的更完整和準確。

3

其他答案可能已經顯示了大部分細節。但是,如果我們在IIS和ASP.NET水平仔細分類,下面是你應該注意第一次出現這種差異,


IIS身份驗證

,如HTTP數據包在IIS級別第一個到達終點。 IIS支持多種方式,

  • 匿名(在IIS配置中配置匿名用戶帳戶)
  • 的Windows(瀏覽器端的用戶)
  • 基本(瀏覽器端的用戶)
  • 摘要(瀏覽器端的用戶)

這些身份驗證方法如何在數據包級別工作需要您捕獲網絡數據包並潛入該級別的對話。

此身份驗證的結果是IIS生成用戶令牌並傳遞給ASP.NET管道。


ASP.NET驗證

ASP.NET有其自身的幾種身份驗證方法,

  • 的Windows(這裏ASP.NET信託和解釋令牌IIS把用戶,並確定ASP.NET用戶身份應該創建並支持哪些角色,而無需在ASP.NET級別進行進一步的身份驗證。)
  • 表單(基於)身份驗證(其中ASP.NET忽略用戶令牌,並使用Cookie或類似的我建立一個高級認證方法。在IIS方面,您通常會設置匿名身份驗證。)
  • 基於聲明的身份驗證,OpenID,OA等等與基於表單的類似,他們不太關心IIS生成的用戶令牌。

可以在IIS上使用非匿名方式,在ASP.NET端使用非Windows方式來設置所謂的混合身份驗證。

+0

謝謝你的好解釋 – Dan