web-dev-qa-db-ja.com

Cognitoでトークンの有効期限を処理する方法

AWS CognitoをIDプロバイダーとして使用するアプリケーションを開発しています。そのため、ユーザーはAWS Cognitoプールで認証され、アクセストークン、アクセスID、および更新トークンを取得します。その後、ユーザーはアプリにバックエンドリクエストを行うことができます。アクセストークンを取得して検証し、Cognito AWSでユーザープロファイルを取得して、リクエストを承認します。

問題は、アクセストークンの有効期限が切れ、クライアントが期限切れのトークンをバックエンドに送信した後、バックエンドアプリがエラー(トークンが試行済みまたは未承認)になることです。

このワークフローを機能させるにはどうすればよいですか?

トークンの有効期限が切れたというメッセージをクライアントに送信することを考えていたので、クライアントはCognitoプールに対してトークンを更新しました。それは正しいアプローチですか?

11
p.magalhaes

Cognitoユーザープールからアクセストークン、ID、および更新トークンを取得したら、ローカルにキャッシュする必要があります。アクセストークンとIDトークンは1時間有効であり、その期間内で可能な限り再利用する必要があります。

これらのトークンはJWTトークンであり、有効期限を保持します。 JWTトークンをデコードし、トークンとともにこの有効期限をキャッシュすることもできます。トークンのキャッシュにアクセスするたびに、キャッシュされている有効期限に対して現在の時刻も確認してください。有効期限が切れている場合は、更新トークンを使用して最新のアクセストークンとIDトークンを取得し、トークンをキャッシュして再度有効期限を切れます。

AndroidiOS of JavaScript のいずれかの高レベルSDKを使用する場合、SDKがこれらすべてを管理します。

15
Chetan Mehta

これらの使用方法の詳細については、このリンクを参照してください。 http://docs.aws.Amazon.com/cognito/latest/developerguide/Amazon-cognito-user-pools-using-tokens-with- identity-providers.html

更新トークンを使用して新しいトークンを取得するには、「AdminInitiateAuth」APIを使用し、AuthFlowパラメーターにREFRESH_TOKEN_AUTHを渡し、AuthParametersパラメーターにキー「REFRESH_TOKEN」を指定して更新トークンを渡します。これにより、Amazon Cognitoサーバーでトークン更新プロセスが開始され、新しいIDおよびアクセストークンが返されます。

つまり、更新トークンを使用してAdminInitiateAuthアクションを呼び出します。好みの開発言語のSDKを見てください。

2
Rob Van Pamel

Amazon Cognitoユーザープール用のカスタムオーソライザーを開発する必要があります。これにより、各APIゲートウェイが検証されます。詳細はこちらをご覧ください。

API CognitoユーザープールとAPI Gatewayの統合