![](/img/trans.png)
[英]MVC 6 Cookie Authentication - Getting User Details From the Cookie
[英]MVC authentication with additional user details
我們目前開始使用MVC,現在正在研究身份驗證。 .net身份驗證不一定是我們的強項,因此需要一些建議或指針。
我們目前的設置:
我們想要實現的目標:
這是解決這個問題的正確方法嗎? 我們正在努力尋找任何樣本等以匹配我們所追求的方案。
不幸的是,我們需要使用第3方系統來訪問角色,這是通過Web服務調用實現的。
MVC 4是否有任何新改進可以更好地處理帶有更多用戶詳細信息的身份驗證? 任何幫助或建議,將不勝感激。 :)
聽起來像是聯合身份驗證的理想選擇。 您甚至可以使用WIF(Windows身份基礎),它現在是基類庫的一部分。
通常,聯合身份驗證包括以下部分:將身份驗證委派給外部身份提供者,使用身份提供者的響應,將身份持久保存在本地(可能在cookie中)。
WIF具有圍繞WS-Federation協議構建的解決方案,可解決所有這些問題。 這樣做的真正真正好處是,您可以輕松地在不同的身份提供者之間切換 。 您可能會認為這是無用的,直到您將其付諸實踐,然后立即開始在腦海中創建復雜的業務場景。
使用WIF需要一些知識,並且可以輕松回答特定問題。 但是,直到您至少掌握了一些基礎知識,這聽起來像是一個龐然大物。 您絕對應該從這里閱讀免費的電子書, 基於聲明的身份和訪問控制
http://msdn.microsoft.com/en-us/library/ff423674.aspx
只需下載並開始閱讀。 我保證你會立刻找到頁面您可以找到很多的你的問題和頁面,你會覺得這個常數“哇,所以這是它應該怎么做!”。
只是為您的問題之一提供特定的答案:用戶數據可以保留在身份驗證cookie中。 如果您堅持使用WIF的Claims模型,那么表達任意數據是很自然的: 聲明是一對(聲明類型,聲明值)。 但是,這需要切換到SessionAuthenticationModule,因為表單身份驗證模塊可能會產生太大的cookie:
http://www.wiktorzychla.com/2012/09/forms-authentication-revisited.html
(會話認證模塊具有特殊的“會話”模式,其中大部分身份存儲在會話容器中的服務器本地,因此cookie很小)
是的,聯邦身份模型可與MVC授權標簽一起使用。 類型角色的聲明被解釋為用戶角色。 然后,遠程身份提供者甚至可以設置用戶角色,並且您可以以通常的方式保護MVC控制器。
如果您很幸運,您的第三方組件可能會附帶一個Claims提供程序,因此您可以使用基於Claims的身份驗證,並讓Claims提供程序以您可以在您的應用程序中使用的Claims形式提供其他用戶數據。 有關教程,請參見此鏈接 。
如果您無法訪問Claims提供程序,則已知的安全構造塊仍適用於MVC。 因此,對於其他角色,您可以創建一個RoleProvider來請求角色並在應用程序中對其進行配置。 然后,您可以使用Authorize屬性保護控制器或操作。
為了優化對角色的請求,以使您不必一遍又一遍地從第三方系統進行請求,有一些替代方法:
您的RoleProvider需要實現緩存技術(Cookie,Session或Cache)。
關於用戶配置文件的最后一點,我可以想象ASP.NET 2.0的用戶配置文件仍然有效。 我沒有任何經驗,因此無法為您提供是否使用它的建議。 另一方面,這些數據似乎對安全性不是太關鍵,因此一旦用戶通過身份驗證,您也可以將它們存儲在cookie或會話內存中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.