2015-12-21 71 views
0

我正在創建一個新的Web應用程序,並且計劃爲Web服務使用Knockout Js作爲前端UI和(此時此刻)MVC Web Api。 UI應用程序將是一個單頁面應用程序(SPA)。SPA敲除應用程序 - 身份驗證方法

我需要內容才能保護登錄用戶的身份(身份驗證)。我打算根據用戶角色(授權)擁有不同級別的內容。

我正試圖建立執行用戶身份驗證的最佳方式。我通常使用ASP.net表單身份驗證,但我聽說過很多關於oAuth但不確定它是否最好(最安全)的方法(如果未正確實現,我已經閱讀了許多有關oAuth 2.0規範的負面消息)。我也聽說索賠認證是一種可靠的認證技術。

我試圖想到其他形式的身份驗證的原因是靈活性。現在我正在開發一個基於Web的應用程序,但我知道我們有將來開發的原生移動應用程序,並且我希望爲所有應用程序提供單一用戶羣。

有人可以幫助我(認證設備)的身份驗證方法脫穎而出,重點是如何初始客戶端身份驗證的工作,其次是從用戶界面到Web API的可疑請求檢索數據。

在此先感謝您的任何建議!

回答

1

嗯,這是我的意見。

您正在使用Web API,因此FormsAuthentication在我看來並不是好的選擇。您可以使用OWIN生成授權令牌(稱爲持票人令牌),該授權令牌將授權請求。 asp.net中的授權令牌通常通過HTTP請求的頭部發送。例如:

$.ajax({ 
    url: '/api/v1/user', 
    headers: { 
     'Authorization': 'Bearer TOKEN_HERE' 
    }, 
    type: 'post', 
    data: someData, 

}); 

這樣一來,你就不會產生任何餅乾,所有的請求是無狀態的,下面的的WebAPI的原則。

要了解有關如何生成令牌的更多信息,請參閱本文的http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/。它使用Identity來管理用戶,但它不是必需的,你可以使用你自己的實現,就像在這個線程中一樣DB-First authentication confusion with ASP.NET Web API 2 + EF6

之後,你應該將你的令牌保存在HTML5 localStorage(或sessionStorage)中,然後使用它只要有必要。

希望它有幫助!

相關問題