簡體   English   中英

AWS Cognito - 使用 JWT 與 cognito.getUser SDK 驗證令牌

[英]AWS Cognito - verify token using JWT vs cognito.getUser SDK

我正在使用 AWS 的以下文檔通過 Cognito 驗證傳入令牌以驗證 Cognito 池中的用戶: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using -tokens-verifying-a-jwt.html

現在我還需要驗證該用戶的自定義屬性之一(電子郵件)。 (基本上這是為了緩解某些用戶可以更改 API 有效負載中的電子郵件 ID 以訪問其他人的詳細信息的情況)。

我發現這樣做的 Cognito SDK 是這樣的: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html

它工作得很好,但這讓我想到了一個問題:因為我在這個 SDK 中發送訪問令牌,我是否還需要使用以前的基於 jwt 的令牌驗證? 因為這個 SDK 還處理令牌無效/過期的情況,並相應地發送錯誤代碼。 有沒有我遺漏了前一個案例處理而后一個案例沒有處理的東西?

簡答:沒有,你可以忽略JWT的內容。

更長的答案:JWT 令牌提供了一種快速驗證用戶是否已通過身份驗證的方法,無需檢查數據庫或外部服務。 這在大容量應用程序中可能非常重要。

但是,它們有幾個限制:

  • 發出帶有過期時間戳的 JWT 令牌。 如果您依賴 JWT,則在該時間戳到期之前,您無法強制注銷用戶。
  • 為了安全起見,您的 JWT 令牌必須使用非對稱密鑰對進行簽名(我提到這一點只是因為很多人錯誤地實施了自己的身份服務器;Cognito 做得對)。
  • 令牌中的聲明(並由身份服務器簽名)可能不足以滿足您的需求。 最佳實踐是最小化令牌的大小,iirc Cognito 遵循這一實踐,僅包含與身份驗證直接相關的用戶屬性。

如果這些限制中的任何一個適用於特定用例(這聽起來像是第三個適用於您),那么您將不得不對身份服務器進行外部服務調用。 如果您這樣做,並且服務器報告身份驗證狀態,則無需關注令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM