2017-10-11 83 views
1

AWS CognitoをIDプロバイダとして使用するアプリケーションを開発しています。そのため、ユーザーはAWS Cognito Pooで認証し、アクセストークン、アクセスID、更新トークンを取得します。 その後、ユーザーは私のアプリケーションにバックエンド要求を行うことができます。私はアクセストークンを検証し、Cognito AWSでユーザープロファイルを取得し、要求を承認します。Cognitoでトークンの有効期限を処理する方法

問題は、アクセストークンが期限切れになった後、クライアントが期限切れのトークンをバックエンドに送信すると、バックエンドアプリにエラーが発生します(トークンが認定されたかどうか)。

このワークフローはどのように動作させることができますか?

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

答えて

4

Cognito User PoolsからAccess Token、ID、およびRefreshトークンを取得するときは、ローカルにキャッシュする必要があります。アクセストークンとIDトークンは1時間有効であり、可能な限り再使用しないでください。

これらのトークンは、JWTトークンであり、有効期限を内部に保持します。 JWTトークンをデコードし、この有効期限をトークンと共にキャッシュすることもできます。トークンのキャッシュにアクセスするたびに、キャッシュされた有効期限と現在の時刻もチェックします。有効期限が切れている場合は、Refreshトークンを使用して最新のAccessトークンとIDトークンを取得し、トークンをキャッシュしてもう一度終了します。

AndroidiOSJavaScriptの高レベルSDKのいずれかを使用している場合は、SDKによってすべてが管理されます。

+0

こんにちは、リフレッシュトークンを使用してIDトークンをリフレッシュすることについてのヒントを教えてください。 –

+0

こんにちは、あなたはこのリンクでそれらを使用する方法の詳細を見つけることができます.http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity -providers.html。手短に言えば、更新トークンでAdminInitiateAuthアクションを呼び出します。 –

+0

@Chetan Mehta、iOS SDK(AWSCognitoIdentityProvider 2.6.7)ではトークンが自動的に更新されません。ここに掲載されている投稿はこちらですhttps://stackoverflow.com/q/49142054/2534233 – user44776

2

詳細については、このリンクで使用する方法をご覧ください。 http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

は theAuthFlowパラメータと のリフレッシュトークンキー「REFRESH_TOKEN」とAuthParametersparameterためREFRESH_TOKEN_AUTHを渡して、新しいトークンを取得するにはリフレッシュトークンを使用 AdminInitiateAuthのAPIを使用します。これにより、 がAmazon Cognitoサーバーのトークン更新プロセスを開始し、 新しいIDとアクセストークンが返されます。

要するに、更新トークンを使用してAdminInitiateAuthアクションを呼び出します。必要な開発言語のSDKを見てください。

関連する問題