管理使用者集區權杖過期和快取 - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理使用者集區權杖過期和快取

每次您想要取得新的 JSON Web 權杖 () 時,您的應用程式都必須成功完成下列其中一個請求JWT。

  • 權杖端點請求用戶端憑證或授權碼授與

  • 從您的託管 UI 請求隱含授與。

  • 在 Amazon Cognito API請求中驗證本機使用者,例如 InitiateAuth

您可以設定使用者集區,將權杖設定為在幾分鐘、幾小時或幾天後過期。為了確保應用程式的效能和可用性,請在權杖生命週期的 75% 內使用 Amazon Cognito 權杖,然後只擷取新的權杖。您為應用程式建立的快取解決方案可讓權杖保持可用,並在請求率過高時防止 Amazon Cognito 拒絕請求。用戶端應用程式必須將權杖儲存在記憶體快取中。伺服器端應用程式可以新增加密的快取機制來儲存權杖。

當您的使用者集區產生大量使用者或 machine-to-machine活動時,您可能會遇到 Amazon Cognito 對您可以建立的權杖請求數量所設定的限制。為了減少對 Amazon Cognito 端點發出的請求數量,您可以安全地存放和重複使用驗證資料,或實施指數退避和重試。

驗證資料來自兩種端點類別。Amazon Cognito OAuth 2.0 端點包含權杖端點,該端點可服務用戶端憑證和託管 UI 授權碼請求。服務端點會回應使用者集區API請求,例如 InitiateAuthRespondToAuthChallenge。每種類型的請求都有自己的限制。如需限制的詳細資訊,請參閱 Amazon Cognito 的配額

使用 Amazon API Gateway 快取 machine-to-machine存取權杖

透過API閘道權杖快取,您的應用程式可以因應大於 Amazon Cognito OAuth端點預設請求率配額的事件進行擴展。

維護 M2M 存取字符快取的API閘道圖表。API 代理會處理權杖請求,如果快取權杖已經有效,則傳回快取權杖。

您可以快取存取權杖,以便您的應用僅在快取權杖過期時請求新的存取權杖。否則,您的快取端點會從快取傳回權杖。這可防止對 Amazon Cognito API端點進行額外呼叫。當您使用 Amazon API Gateway 作為 的代理時權杖端點,您的 會API回應大部分原本會促成請求配額的請求,以避免因速率限制而失敗的請求。

下列閘道API型解決方案提供權杖快取的低延遲、低程式碼/無程式碼實作。API 閘道APIs在傳輸中加密,也可以選擇靜態加密。API Gateway 快取非常適合 OAuth 2.0 用戶端憑證授予 ,這是一種經常大量授予的類型,可產生存取權杖來授權 machine-to-machine 和微服務工作階段。如果流量激增導致您的微服務水平擴展,您可以在超過使用者集區或應用程式用戶端 AWS 請求速率限制的磁碟區使用相同的用戶端憑證,最終會有許多系統。為了保持應用程式可用性和低延遲,快取解決方案是在這種情況下的最佳做法。

在此解決方案中,您可以在 中定義快取API,以針對您要在應用程式中請求的每個OAuth範圍和應用程式用戶端組合,儲存個別的存取權杖。當您的應用程式發出符合快取金鑰的請求時,您的 會以 Amazon Cognito 向第一個符合快取金鑰的請求發出的存取字符來API回應。當您的快取金鑰持續時間過期時,您的 會將請求API轉送到您的權杖端點,並快取新的存取權杖。

注意

您的快取金鑰持續時間必須短於應用程式用戶端的存取權杖持續時間。

快取金鑰是您在 scope URL 參數中請求OAuth的範圍和請求中Authorization標頭的組合。Authorization 標題包含您的應用程式用戶端 ID 和用戶端密碼。您無需在應用程式中實作其他邏輯即可實現此解決方案。您只能更新組態以變更使用者集區權杖端點的路徑。

您也可以使用 ElastiCache (Redis OSS) 實作權杖快取。對於具有 AWS Identity and Access Management (IAM) 政策的精細控制,請考慮使用 Amazon DynamoDB 快取。

注意

API Gateway 中的快取需要支付額外費用。如需詳細資訊,請參閱定價。

使用 API Gateway 設定快取代理

  1. 開啟API閘道主控台並建立 REST API。

  2. 資源 中,建立POST方法。

    1. 選擇HTTP整合類型

    2. 選取使用HTTP代理整合

    3. 輸入 的端點URLhttps://<your user pool domain>/oauth2/token

  3. Resources (資源) 中,設定快取金鑰。

    1. 編輯方法的方法請求POST。

    2. 設定您的 scope 參數和 Authorization 標題作為您的快取金鑰。

      1. 將查詢字串新增至URL查詢字串參數,然後選擇scope字串的快取

      2. 新增標頭以HTTP請求標頭,並選擇Authorization標頭的快取

  4. Stages (階段) 中,設定快取。

    1. 選擇您想要修改的階段。

    2. 設定 下,選取啟用API快取

    3. 選擇 Cache capacity (快取容量)。

    4. 選擇 3600 秒的快取 time-to-live (TTL)

    5. 清除 需要授權 核取方塊。

  5. 階段 中,記下叫用 URL

  6. 更新您的應用程式,以將請求權POST杖化為 ,API而不是您的URL使用者集區的/oauth2/token端點。