0

APIサービスがあります。これは、Cognitoオーソライザ+ LambdaをバックエンドとしてAWS APIゲートウェイを使用してデプロイする予定です。このサービスはjavascriptクライアントによって使用されます。また、エンドユーザーは、プログラムによるアクセスの生のエンドポイントとして公開する必要があります。AWS CognitoフェデレーションID +プログラムAPIの永続アクセスキー

フェデレーションされたIDを使用してjsクライアントでサインイン/ログインを有効にするのはかなり簡単でしたが、私は個人的なアクセストークンをユーザーに提供してhttpヘッダーに直接含める方法を理解できません。

は、ここで私は最後に取得したいのですが、2つの認証フローで:

JSクライアントのユーザーのためのフロー:FacebookやGoogleと

  1. ユーザーがサインアップ。
  2. ユーザーは自分の身元を確認します。
  3. ログイン後、ユーザーはインターフェイスの[プロファイル/ APIキー]セクションに移動します。
  4. ユーザーコピーがトークンにアクセスし、任意のHTTPクライアントのHTTPリクエストヘッダ(httpie、カール、どんな言語ライブラリ)管理作成したユーザーのための

流れでそれを含めることができます。

  1. 管理者がユーザーを作成します。
  2. そのユーザーのアクセストークンが生成されます。
  3. 管理者は生成されたアクセストークンを渡します。
  4. ユーザーは、前の手順のように、リクエストを行うためにHTTPヘッダーに含めることができます。

アクセストークンは永続的であり、いつでもユーザーが再生することができます(Stripe APIアクセスキーを考えてください)。

ここでのポイントは、ユーザーがプログラムでプログラムを使用し始めるための追加手順を省略することです。これまでAWSのドキュメントで最も近いのはdeveloper-authenticated-identitiesですが、ユーザはAWS sdkを利用するべきです。

このタスクを実行する1つの方法は、APIゲートウェイでCognito認証者の代わりにカスタム認証者を使用することです。カスタムオーソライザは、例えば、 authヘッダー名を入力し、Cognitoで認証するか、データベース内のユーザーAPIアクセストークンに認証するかを決定します。可能であれば、わかりません。ラムダ関数のCognito認証フローを再実装することが大きな欠点であるかどうかは分かりません。

CognitoやAPI Gatewayを使用してAPIアクセストークン(再)生成を行うにはどうすればよいですか?

+0

まず、セキュリティ上の理由により、Cognitoからのアクセストークンは永続的ではないと考えられます。問題が正確であるかどうかはわかりません。 Cognitoにトークンを要求し、プログラムでHTTPリクエストに含めるスクリプトを書くことができます。あなたはそのようにした後に再度サインインしなければならないということを意味しますか?そうであれば、常に新しいトークンを取得するためにリフレッシュトークンを使用できます – agent420

答えて

0

ユーザプールで最初のフローが可能である必要があります。 Cognito User Poolsにフェデレーション機能が追加され、Facebook/Googleを使用してフェデレーションを行い、使用されるフローに応じてアクセストークン/リフレッシュトークンを受け取ることができます。

管理者が作成したユーザーの場合、ユーザーはトークンを発行する前に認証する必要がありますが、これは一時的なパスワードでユーザーを作成し、そのパスワードでユーザーに署名した後で変更およびログインできます再びアクセス/リフレッシュトークンを受信する。

リフレッシュトークンの使用例は、新しいアクセストークンを受け取るためにCognito APIに対して使用できることです。リフレッシュトークンが期限切れになると(デフォルトは30日ですが、設定可能です)、ユーザーは再度認証する必要があります。

関連する問題