2017-10-20 57 views
0

給予一定的背景下,多包涵,在帶有React前端的.NET Core 2.0應用程序中處理JWT的最佳做法是什麼?

  • 我們有一個用於在所有我們的應用程序共享驗證現有的外部OAuth的服務。它有一個用於用戶身份驗證的登錄表單,併爲其API提供了JWT,這些API在我目前正在使用的應用程序中調用。
  • 我正在使用的應用程序是使用.NET Core 2.0和React前端。服務器端主要負責管理外部API的令牌,併爲React客戶端調用提供'代理'API,然後調用外部API。從本質上講,架構就像其他任何標準的Web API/MVC應用程序一樣,但不是直接從數據庫中獲取數據,而是調用一些其他外部API。

在.NET Core應用程序的上下文中,它正在爲其API使用JWT身份驗證。一旦用戶使用該外部服務進行身份驗證,他們將擁有用於外部API(存儲在會話中)的JWT和用於內部「代理」API(通過cookie傳遞給客戶端)的另一個JWT。因此,客戶端發起了一個調用(「api/users」),該請求被路由到我的控制器,使用JWT授權,該控制器調用某個UserService,該會話使用存儲在會話中的JWT調用外部API 。

陣營客戶端發出的API調用與令牌 - > .NET核心API抓起JWT存儲在會話 - >使用JWT進行調用外部API

這一切工作正常,但現在我運行到刷新客戶JWT的一些問題。我目前正在將一個訪問令牌傳遞給客戶端的一個cookie中,但我還需要將一個刷新令牌傳遞給客戶端,以便在到期時間已過時可以獲取新的訪問令牌,而我不是正在做。我也需要以某種方式傳遞令牌的到期時間。將所有這些序列化爲JSON對象並將其傳遞給cookie是否有意義?將所有這些交給客戶的好方法是什麼?我基本上試圖達到客戶端將檢查的點,「我的令牌是否過期了?」,如果是,則使用刷新令牌獲取新令牌,如果不是,繼續進行API調用。

對不起,如果所有這些信息是一個簡單問題的矯枉過正,只是試圖給出一些上下文。

+0

?什麼是身份提供者? – Coding

+0

你的問題與reactjs有什麼關係? – webdeb

回答

0

如果您使用的身份服務器,您可以您是否使用Identity Server的檢查刷新令牌here

+0

我目前沒有使用Identity。對於更多的上下文,這是我用於JWT身份驗證的粗略指南:https://stackoverflow.com/questions/45715394/asp-net-core-2-0-bearer-auth-without-identity – Blake

相關問題