2017-06-19 110 views
0

我有以下設置。使用asp.net web api令牌在mvc網站上進行身份驗證

2個移動應用程序與asp.net web api 2項目通信,他們使用Token Authentication。每個移動客戶端都存儲令牌客戶端,而不是用戶名和密碼。

然後,我的門戶網站託管在asp.net mvc 5項目上,該項目使用標準Cookie身份驗證。

現在在某些情況下,我的移動應用需要從mvc 5門戶網站加載網頁。例如我們的付款網關頁面。但客戶端需要進行身份驗證才能加載此頁面。

當我們向用戶展示Web門戶網站的時候。它要求他們再次登錄。這是非常糟糕的用戶體驗。

我如何可以驗證客戶端上的MVC網站,用我的web api Token

我想象這樣的功能在MVC網站:

pubic Action LogInWithToken(String token) 
{ 
var user = GetUserFromToken(token); 
var isAllowed = AuthenticateUserFromToken(user,token); 
if(!isAllowed) return 401; 
return CreateCookieForUser(user); 
} 
+0

您可以使用自定義授權屬性,您可以在其中檢查請求數據以及是否存在令牌,然後驗證用戶。檢查[這裏](https://msdn.microsoft.com/en-us/library/ee707357(v = vs.91).aspx)並在這方面進行搜索。 –

+1

可能的重複 - https://stackoverflow.com/questions/38661090/token-based-authentication-in-web-api-without-any-user-interface –

+0

@SivaGopal是的,我可以做到這一點。但你如何解密令牌?我仍然需要一種方法來獲取'string token'並從令牌獲取用戶和時間戳。 – Zapnologica

回答

1

是在託管的Web阿比2應用程序與MVC 5應用程序相同的機器?

如果是,您可以手動反序列化令牌以獲取用戶的ID。請參閱Extract User details from web api auth token in MVC

從那裏,您可以自動在CookieAuthentication中登錄用戶。

但是,如果它們託管在不同的機器中,則必須在項目的Web.Config文件中指定相同的機器密鑰。

+0

他們託管在天藍色的web服務上,我很想設計一個橫向擴展的服務器,所以我不想依賴他們是同一臺機器。您發送的鏈接要求我們更改API令牌以使用JWT。我怎樣才能使用標準的API令牌來做到這一點。 – Zapnologica

相關問題