Amazon Cognitoとは?アプリのユーザー認証を初心者向けに解説

  • URLをコピーしました!

前の記事では、 IAMグループとIAMロールについて学びました。

IAMを利用すると、 AWSを操作するユーザーやAWSサービスに対して 適切な権限を設定できます。

では、AWS上にECサイトやWebアプリケーションを作った場合、 そのサービスを利用する一般ユーザーのログインは どのように管理すればよいのでしょうか?

ECサイトに1万人の会員がいる場合、
1万人分のIAMユーザーを作成する?

もちろん、そのような使い方はしません。

Webサイトやモバイルアプリを利用する エンドユーザーの認証で活用できるのが Amazon Cognitoです。

☁ AWS BEGINNER

この記事はAWS初級講座の一部です。 AWSを基礎から順番に学びたい場合は、講座一覧から学習順を確認できます。

AWS初級講座を見る →
LESSON GOAL この記事のゴール

Amazon Cognitoが 「Web・モバイルアプリの利用者を認証するために使えるサービス」 であることを理解し、IAMとの違いやUser Pool・Identity Poolの基本的な役割を説明できる状態を目指します。

目次

Amazon Cognitoとは?

Amazon Cognitoは、 Webアプリケーションやモバイルアプリケーションの ユーザー認証・認可に利用できるAWSサービスです。

たとえば、普段利用しているWebサービスには 次のような機能があります。

01 ユーザー登録

新しい利用者のアカウントを作成する

02 ログイン

ユーザーが本人であることを確認する

03 パスワード管理

パスワード変更やリセットなどを行う

04 MFA

複数の要素を使って認証を強化する

こうした認証機能を自分たちですべて構築・管理するのは大変です。

Amazon Cognitoを利用することで、 アプリケーションに必要な認証機能を AWSのマネージドサービスとして利用できます。

Amazon Cognitoを利用するイメージ

ECサイトを例に考えてみましょう。

USER ECサイト利用者 メールアドレス
パスワード
AUTH Amazon Cognito ユーザーを認証
APPLICATION ECサイト ログイン後の機能を利用

ユーザーがメールアドレスとパスワードを入力すると、 Cognitoがユーザーを認証します。

認証に成功すれば、 アプリケーション側は 「このユーザーは認証済みである」 と判断できます。

IAMとAmazon Cognitoは何が違う?

AWS初心者が特に混同しやすいのが、 IAMとAmazon Cognitoの違いです。

どちらも認証・認可に関係していますが、 主な対象となるユーザーが違います。

IAM AWSを利用する側

AWSの管理・運用やAWSリソースへのアクセスなどを行う主体

VS
AMAZON COGNITO アプリを利用する側

ECサイトやWeb・モバイルアプリなどを利用するエンドユーザー

IAMのイメージ AWS環境を運用する担当者
Cognitoのイメージ ECサイトへログインする会員
POINT アプリの利用者にIAMユーザーを作成するわけではない

ECサイトに10万人の利用者がいても、 その10万人をIAMユーザーとして作成するわけではありません。 アプリケーション利用者の認証には、Amazon Cognitoなどの仕組みを利用します。

Cognitoには2つの重要な仕組みがある

Amazon Cognitoを理解するときに、 まず覚えておきたいのが次の2つです。

USER POOL ユーザープール

アプリケーションのユーザーを登録・認証する

IDENTITY POOL アイデンティティプール

ユーザーへ一時的なAWS認証情報を提供する

User Pool = アプリのユーザーを認証 Identity Pool = AWSリソースを利用するための一時的な認証情報

初級では、この2つの違いを大まかに理解できれば十分です。

User Poolとは?

User Pool(ユーザープール)は、 アプリケーションのユーザーを管理・認証するための仕組みです。

たとえばECサイトで、 次のようなログイン画面があるとします。

ユーザーが入力した情報をもとに、 User Poolが認証を行います。

USER 利用者
USER POOL 本人確認
APPLICATION ログイン成功

User Poolでは、 ユーザー登録やログインだけでなく、 パスワード管理やMFAなどの認証機能も利用できます。

認証に成功するとトークンが発行される

User Poolでユーザー認証に成功すると、 アプリケーションは認証結果として トークンを受け取ります。

① ログイン ユーザー → User Pool
② 認証 User Poolが本人確認
③ トークン発行 認証結果をアプリへ返す

Amazon Cognito User Poolでは、 認証されたユーザーに対して JWT(JSON Web Token)形式のトークンが利用されます。

初心者向けポイント

この段階ではJWTの細かな構造まで覚える必要はありません。 まずは「認証に成功したことをアプリ側で確認するためにトークンを利用する」 と理解しておきましょう。

Identity Poolとは?

User Poolは、 アプリケーションのユーザーを認証する仕組みでした。

一方で、 Identity Pool(アイデンティティプール)は、 ユーザーに一時的なAWS認証情報を提供する仕組みです。

たとえば、ログインしたユーザーが アプリからAmazon S3へ直接画像をアップロードするケースを考えてみましょう。

USER アプリ利用者
USER POOL 認証
IDENTITY POOL AWS認証情報
AWS Amazon S3

Identity Poolを利用すると、 認証されたユーザーなどに対して 一時的なAWS認証情報を提供できます。

前の記事で学習した IAMロールがここでも関係してきます。

CONNECTION 前の記事のIAMロールにつながる

Identity PoolではIAMロールと組み合わせて、 アプリケーション利用者に必要な範囲のAWSアクセス権限を与えることができます。

User PoolとIdentity Poolを整理しよう

項目 User Pool Identity Pool
主な役割 アプリユーザーの認証 一時的なAWS認証情報の提供
ユーザー登録
ログイン
トークン発行
AWS認証情報 直接は提供しない 一時的な認証情報を提供
IAMロール 基本的なユーザー認証では不要 アクセス権限の設定で利用
User Pool → 「あなたは誰?」 Identity Pool → 「AWSで何を利用できる?」

Googleなどのアカウントでもログインできる

Amazon Cognitoでは、 独自のメールアドレス・パスワードによる認証だけでなく、 外部のIdentity Provider(IdP)と連携することもできます。

たとえば、Webサービスで次のようなボタンを見たことがあるでしょう。

G Googleでログイン
Appleでサインイン
IdP 外部IDでログイン

Amazon Cognito User Poolでは、 Googleなどのソーシャルプロバイダーや、 SAML・OIDCに対応した外部IdPとの連携も可能です。

POINT

「Cognitoを使う=必ずCognito内にパスワードを持つ」 というわけではありません。 外部の認証サービスと連携する構成も利用できます。

理解度チェック:どの仕組みを使う?

ここまで学習した IAM・User Pool・Identity Poolを使い分けてみましょう。

AUTH SIMULATOR

この場面では何を使う?

SCENARIO 1 / 3

どれを使うか考えてみましょう

「誰が」「何のために」利用するのかがポイントです。

初心者が間違えやすいポイント

① アプリ利用者にもIAMユーザーを作成する

× WRONG ECサイト会員1万人 → IAMユーザーを1万人作成

IAMユーザーは、 一般的なWebサービスの会員アカウントを作成するための仕組みではありません。

アプリケーション利用者の認証には、 Amazon Cognito User Poolなどを利用できます。

② User PoolとIdentity Poolは同じもの

名前は似ていますが、 役割が異なります。

User Pool = アプリユーザーの認証 Identity Pool = 一時的なAWS認証情報

③ Cognitoを使えば必ずIdentity Poolも必要

User PoolとIdentity Poolは 必ずセットで利用するわけではありません。

たとえば、 アプリケーション利用者をUser Poolで認証し、 発行されたトークンを使ってAPIへのアクセスを制御する構成では、 Identity Poolを利用しない場合もあります。

確認問題:Amazon Cognitoを理解できたか確認しよう

QUESTION 01

Amazon Cognitoの主な利用対象として適切なのはどれですか?

正解:B

Amazon Cognitoは、 Web・モバイルアプリなどの利用者を認証・認可するために利用できるサービスです。

QUESTION 02

アプリケーションのユーザーを登録・認証する仕組みはどれですか?

正解:A

User Poolは、 アプリケーション利用者のユーザー登録やログインなどを提供します。

QUESTION 03

ユーザーに一時的なAWS認証情報を提供する仕組みはどれですか?

正解:C

Identity Poolは、 IAMロールなどと組み合わせて ユーザーへ一時的なAWS認証情報を提供します。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

Amazon Cognitoは Web・モバイルアプリのユーザー認証・認可に利用できる

02

IAMとCognitoでは 主な対象となるユーザーが異なる

03

User Poolは アプリケーション利用者の登録・認証を行う

04

Identity Poolは 一時的なAWS認証情報を提供する

05

User Poolでは Googleなどの外部IdPとの連携もできる

次はIAM Identity Centerを理解しよう

Amazon Cognitoでは、 アプリケーションを利用するエンドユーザー の認証について学びました。

では、企業で複数の社員がAWSを利用する場合はどうでしょうか?

AMAZON COGNITO アプリ利用者

Web・モバイルアプリなどへログイン

NEXT 組織のAWS利用者

複数のAWSアカウントやアプリへのアクセス

組織では、 社員ごとに複数のAWSアカウントへのアクセスを 個別管理するのは大変です。

そこで次の記事では、 組織のユーザーがAWSアカウントやアプリケーションへ アクセスするための仕組みとして IAM Identity Centerを学びます。

NEXT LESSON

次は「IAM Identity Center」を学びましょう

組織のユーザーが複数のAWSアカウントやアプリケーションへ アクセスするための仕組みを学びます。

Cognitoとの「対象ユーザーの違い」 に注目すると理解しやすくなります。

IAM Identity Centerの基本を理解する
AWS BEGINNER

AWS初級講座の一覧へ戻る

AWS初級の学習順を確認したい場合は、 講座一覧へ戻りましょう。

← AWS初級講座へ戻る
目次