1. ホーム
  2. authentication

[解決済み] AWS CognitoのJWTをAPIバックエンドで確認する方法とは?

2023-01-01 15:55:34

質問

Angular2のシングルページアプリと、ECS上で動作するREST APIからなるシステムを構築しています。APIは.Net/で動作しています。 ナンシー で動作していますが、変更される可能性があります。

Cognitoを試してみたいのですが、認証のワークフローはこのように想像していました。

  1. SPA がユーザーにサインインし、JWT を受信します。
  2. SPA はリクエストごとに JWT を REST API に送信します。
  3. REST API は、JWT が本物であることを確認します。

質問はステップ3についてです。 私のサーバー(というか、私のステートレス、自動スケール、負荷分散されたDockerコンテナ)は、トークンが本物であることをどのようにして確認できますか? サーバーはJWTを発行していないので、自分自身の秘密を使うことはできません(基本的なJWTの例で説明されているように ここで ).

Cognitoのドキュメントを読み、たくさんググってみましたが、サーバー側でJWTをどうするかについての良いガイドラインが見つかりません。

どのように解決するのですか?

私はドキュメントを正しく読んでいなかったことがわかりました。それは説明されています はこちら ("Using ID Tokens and Access Tokens in your Web APIs"までスクロールダウンしてください)。

API サービスは Cognito の秘密をダウンロードし、受け取った JWT を検証するためにそれを使用することができます。完璧です。

Edit

Groadyのコメントは的を得ています。 どのように トークンの検証はどうするのですか?私は、次のような実績のあるライブラリを使用することをお勧めします。 jose4j または ニンブス (どちらもJava)を利用し、自分でゼロから検証を実装しないようにしましょう。

ここで を使ったSpring Bootの実装例です。最近、java/dropwizardのサービスでこれを実装する必要があったときに、これを見ることで始めました。