2017-08-02 19 views
0

AWSラムダと関連するAPIゲートウェイエンドポイントAPI(例:/user/{userid}/activities)があるとします。パブリックAPI認証済みユーザーと匿名ユーザーを区別する方法

このAPIは、認証されたユーザーと認証されていないユーザーの両方から呼び出すことができ、これに基づいて別々に動作します。

認証されたユーザーとは、有効なJWTを所有するユーザーです。認証されていないユーザー、JWTまたはJWTが期限切れになっていないか、無効です。

このJWTは、トークンの署名公開鍵とその他のパラメータ(有効期限、発行者など)に基づいて検証を行うカスタム認証者によって検証されます。

/user/{userid}/activitiesに関連するラムダは、カスタムオーソライザが関連するコールを検証したかどうかを知る必要があるため、どのような動作を使用するかを選択できます。

どうすればいいですか?

+0

aws Cognitoをお使いですか?そうであれば、認証されたアイデンティティと認証されていないアイデンティティのサポートがあり、トークンが両方とも発行される – Ashan

答えて

0

アプローチは、匿名ユーザーと認証ユーザーを区別する方法によって異なります。

承認ヘッダーが指定されていない場合に匿名ユーザーを識別する場合、AWS APIGateway承認者は、ヘッダーが存在しないため常にアクセスを拒否します。

あなたはオプションを以下の点を考慮できます。

  1. 常に(匿名/認証されたユーザーの両方のための)トークンを使用しています。
  2. 認可ロジックをラムダ・ラッパーに移動します(したがって、これらのエンドポイントにカスタム認可者を使用することはありません)。
  3. ルーターを介してプロキシするので、不足している場合は認証ヘッダーを追加することができます(このクライアントは変更されず、サーバーは匿名ユーザー用に定義済みのトークンを追加します)。

あなたのような何かにエンドポイントの署名を変更する必要がありますいずれかの方法:/user/activitiesとコンテキストからのuserIdを推測、コンテキストは、承認者による適切なのuserIdポスト検証で更新することができます。