2017-10-13 88 views
0

我在我的應用程序中使用AWS Cognito來驗證用戶身份。 AWS爲我們提供了JWT令牌。我的問題是,我們是否需要使用express-session來處理會話管理,或者AWS Cognito提供的JWT令牌是否會爲經過身份驗證的用戶管理會話管理。通過Express-Session使用AWS Cognito進行會話管理

+0

您對「認證用戶的會話管理」是什麼意思?您是否想臨時緩存身份驗證身份以加速後續請求?或者你指的是有狀態的jwt? – Asanka

回答

-1

當您使用Cognito JWT令牌時,不需要顯式的會話處理程序。

您可以將JWT令牌發送到客戶端並將其存儲在Web瀏覽器(本地存儲,會話存儲或Cookie)中,該瀏覽器提供狀態的持久性(Acts作爲會話,並且對令牌持續時間有效)。

對於所有後續請求,您需要將授權標題中的JWT發送回您的快遞服務器。

如果您的API被除瀏覽器之外的其他客戶端使用,例如移動應用程序可以實現統一的狀態管理,那麼這將比會話有優勢。

爲了最大限度地降低需要高安全性的應用程序在LocalStorage中存儲id令牌的風險,請將令牌持續時間縮短並使用刷新令牌生成新令牌。

注意:如果您使用Cognito Hosted UI,則需要使用Cognito Autorization代碼授權流來獲取刷新令牌。

+0

我認爲將JWT暴露給Web瀏覽器並將其用於會話是非常危險的,因爲它會打開會話劫持的內容。我建議不要混淆認證和會話管理。 – galaxy

+0

@galaxy這是一個永無止境的話題,它基本上會增加主觀意見。在回答之前,我已經完成了檢查。我可以向你提供兩個不同的參考資料(閱讀超過25+),這些參考資料反映了我提供的答案。朝 - https://auth0.com/blog/cookies-vs-tokens-definitive-guide/和反對 - http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-換會話/。我必須評估一個企業客戶的方法,所以我也向這個主題諮詢過安全專家。如果您需要,我可以分享更多信息。查看更新的答案以獲取更多詳細信息 – Ashan

+0

您的第二個鏈接實際上是唯一一個關於該主題的鏈接,並且由實際理解*身份驗證*和會話維護之間區別的人編寫。 Auth0的一個很奇怪,他們認證過程與會話管理混淆,所有問題都來自於混淆。一個會話並不關心你是否被認證 - 它只是應該繼續定義的狀態(你實際上可以存儲一個實體被認證的屬性)。 – galaxy