2015-01-17 108 views
0

我目前正在研究一個解決方案,其中包括一個多租戶webApi,將被多個客戶端訪問,其中一些我將創建,其他一些將創建。 訪問API將通過ApiKey &祕密(足夠用於某些資源)以及用戶名&密碼(用於所有者資源)提供。瀏覽器和Web服務器API認證令牌

目前,我創建的客戶端(.Net MVC Web應用程序)擁有自己的成員系統,因此客戶端的用戶登錄到客戶端系統並且客戶端系統將登錄信息傳遞給Api檢索身份驗證令牌。

客戶會員系統實際上是一個不必要的抽象。我真正想做的是讓用戶直接登錄到api,然後api傳回一個可以從瀏覽器中使用的身份驗證令牌以及.Net MVC客戶端應用程序。

我的問題是,它是實現這一目標的最佳方式。在我看來,我似乎正在努力解決2個問題。

1)有一個基於瀏覽器的登錄(例如ajax/AngularJS)解決方案,它調用api來檢索一個令牌,然後將該令牌傳遞到將存儲它的MVC客戶端(可能會話變量)。以後任何來自.Net MVC客戶端的api調用都可以傳遞令牌。儘管這對我來說似乎是錯誤的。我甚至不確定這是可能的。

2)利用其中一個OAuth流程,以便基於瀏覽器的登錄可以調用API並檢索令牌,然後OAuth流程重定向到MVC客戶端,然後MVC客戶端爲該用戶存儲令牌(同樣,在會話中變量)。

使用使用Owin本地帳戶的VS2013的WebAPI模板生成API併產生通過ValidateClientCredentials和ValidateResourceOwnerCredentials令牌流,但我想我需要使用這個場景流動的其他OAuth網之一。

我知道另一種解決方案是繞過.Net MVC客戶端代碼,並使用knockout或AngluarJS創建一個完全基於瀏覽器的解決方案,但這是一個相當複雜的系統,目前我沒有時間做到這一點所以我正在尋找一種解決方案,它允許我從api中檢索一個令牌,該API可以從我的.Net MVC客戶端和瀏覽器的ajax調用中使用。

任何想法,建議將不勝感激。

在此先感謝。 Justin

回答

0

如果您依賴Azure AD作爲您的憑證存儲和身份驗證系統,那麼您將能夠利用現成的JS庫來自動處理身份驗證,AJAX調用和會話管理問題:請參閱http://www.cloudidentity.com/blog/2014/10/28/adal-javascript-and-angularjs-deep-dive/。 如果您不能依賴Azure AD,則上面提到的庫和樣本的代碼仍然可以作爲構建您自己的系統的參考 - 只要您決定使用的認證系統具有相似的功能。 HTH V.

+0

謝謝@vibronet,我會研究它併發布我的結果。 –