LoginSignup
0
0

[AWS-IAM] Cognito User Poolについて

Last updated at Posted at 2024-05-24

キムです。

約1年ぶりに技術ブログ投稿を再開しました!
不自然な日本語が出てくるかもしれませんが、その時はコメントで指摘いただければ大変助かります。


AWS Cognito


簡単に言えば、AWSサービスを外部サイト(Facebook、Appleなど)の他社サービスと会員登録またはログインを連携させるサービスです。
※User Login ID(Token)でユーザログインを連携させるのと同じ概念。

Cognitoは「ユーザプール」と「ID プールでの認証」の仕組

顧客が Amazon Cognito ユーザープールにサインインすると、アプリケーションは JSON ウェブトークン (JWTsを受け取ります。
ユーザーがユーザープールトークンまたは別のプロバイダーを使用して ID プールにサインインすると、アプリケーションは一時的な AWS 認証情報を受け取ります。
ユーザープールのサインインを使用すると、 AWS SDK を使用して認証と認可を完全に実装できます。 独自のユーザーインターフェイス (UI) コンポーネントを構築しない場合は、構築済みのウェブ UI (ホストされた UI) またはサードパーティー ID プロバイダー (IdP) のサインインページを呼び出すことができます。
このトピックでは、アプリケーションが Amazon Cognito とやり取りして ID トークンで認証し、アクセストークンで認証し、ID プール認証情報 AWS のサービス で にアクセスする方法の概要を説明します。
(Amazon 公式ドキュメントの解説)


①ユーザプールとは

AWSにログインまたはユーザー管理できるユーザー情報が含まれているDBだと考えればOK.
例)
Aというユーザーがフェイスブックを通じてAWSにログインしようとしたが、そのログイン認証をしてくれるのか?

image.png

image.png

他のサービスからAWS Cognitoを通じてログインすると、最終的にCognito Tokenを受け取ることになる。開発エンジニアは必要に応じて当該TokenをAWS API Gatewayなどに送ってサーバーまたはサービスに対する権限を受けることができる。


②IDプールでの認証とは


AWSサーバーまたはサービスにアクセスできる仮資格証明を提供するサービス。
例)
AユーザのCognito Tokenが有効なとき、S3 BucketにAccessできる権限を付与するのか
※全体的なAWS Cognito サービスの事例
image.png

  1. サービス提供者がAWS S3経由でウェブサービス(認証など)をホスティングしている状態。
  2. ユーザーが該当S3に接続し、会員登録を行います。
  3. Cognitoから会員登録に必要なメール認証などのコードを送信します。
  4. ユーザーが認証コードを入力し、ログインするとCognito Tokenを受け取ります。
  5. ユーザーはウェブにログイン後、次ページのリクエスト(S3 Bucket)または他のAPIサービス利用のためAWS API GatewayにCognito Tokenをヘッダーに入れてリクエストします。
  6. AWS API Gatewayで該当Tokenの有効性をCognitoに質問します。
  7. CognitoはこのTokenの有効性を回答してくれます。
  8. Cognitoから受け取った有効性に基づいてAPIサービスの許可・拒否を行います。

最も重要なことは、会員登録/ログインする時にCognitoユーザプールからCognito Tokenを受け取り、S3またはAWSサービス利用の時該当Tokenの有効性を確認してサービスを提供することです。


まとめ

最近、改めてAWS資格勉強をしていますが、
認証のところで概念が曖昧でしたのでブログに内容をまとめて投稿しました。
(自分の勉強兼忘れないように、、)

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0