【AWS】Amazon Cognitoユーザープールの作成方法

投稿 2024年1月28日

更新 2024年1月28日

専門用語の数:

【AWS】Amazon Cognitoユーザープールの作成方法

~ 目次 ~

やりたいこと

Amazon Cognitoのユーザープール

認証と認可

ユーザープール作成方法

まとめ

やりたいこと

ユーザは何もしなくとも、内部的にサインアップさせて

認証や認可の仕組みを使用したいので、AWSのCognitoを使用していきます。

Amazon Cognitoのユーザープール

Cognitoには「ユーザープール」と「IDプール」があります。

ユーザープールはAWSが管理する認証の仕組みで、

IDプールは、IDを発行して他のサービスへのアクセスを許可する認可の仕組みです。


今回はその「ユーザープール」の作成をやっていきます。

※AWSの画面はころころ変わるので、参考程度に

認証と認可

その前に、知っておいた方がわかりやすくなる単語を紹介しておきます。

認証

認証とは、その人が本人かどうかを確かめることです。


例えば、スマホ。

指紋認証か顔認証(フェイスID)は、おそらく設定されているのではないでしょうか。

「認証」という言葉が出てきましたね。

※それがない場合もパスワードを設定しますよね。


スマホはその人が本人かどうかを確かめ、本人であればロックを解除します。

これが認証です。

認可

認可とは、その人が行ってもよいかを確かめることです。


例えば、お酒を購入するのは20歳になってからです。

お酒を買うときに年齢確認をされるのは、20歳未満だと販売してはいけないルールがあるからです。

これが認可です。

ユーザープール作成方法

Cognitoを開く

検索

AWSの画面上部にある検索画面に「cognito」と入力します。


検索結果

入力して出てきた「Cognito」をクリックします。

ユーザープールを作成

初期画面

左上のハンバーガーボタン(三)をクリックします。


ハンバーガーメニュー

ユーザープールをクリックします。


ユーザープール

ユーザープール作成をクリックします。

サインインエクスペリエンスを設定

認証プロバイダー

プロバイダーのタイプ

フェデレーテッドアイテンティティプロバイダーとは、

GoogleやApple等、AWSとは別のサービスを使用して認証させることができる機能です。

今回はAWSだけで認証させるので、チェックは不要です。


Cognito ユーザープールのサインインオプション

サインイン(ログイン)するときに、何を入力してもらうかを決めます。

今回はメールアドレスでサインインするので、Eメールを選択します。

セキュリティ要件を設定

パスワードポリシー

デフォルトパスワードポリシーモード

要求するパスワードのルールを決めます。

もっと簡単にしたりもっと強固にしたい場合は、カスタムを選択し調整しましょう。

多要素認証

MFA

Google Authenticatorなどの認証アプリや、電話番号を用いたSMSで多要素認証を必要とするかを選択します。

今回は不要のため「なし」を選択します。

ユーザーアカウントの復旧

セルフサービスのアカウントの復旧

パスワードを忘れたときにどうやって復旧させるかを選択します。


登録されているメールや電話番号を利用して、ユーザーにPINコードを送信し、

パスワードを変更できるようになる仕組みです。


今回は不要のため無効にしておきます。

サインアップエクスペリエンスを設定

セルフサービスのサインアップ

自己登録

ユーザー側からサインアップを許可するかを選択します。

無効にしてしまうと、AWSのCognito画面からしか登録できないようになります。


属性検証とユーザーアカウントの確認

Cognito アシスト型の検証および確認

Cognitoにはいくつかの属性(データ)を保持できます。

メールアドレス等の属性を、本当に正しいものなのか検証を行います。

その際、自動で送信してもよいか?という許可です。

送信する場合は、送信手段等を選択します。

メールアドレスの検証では、リンク付きのメールが送られ、クリックすると検証済みになります。

今回は不要のため無効にしておきます。

必須の属性

必須の属性

必須の属性(データ)がある場合、入力していなければサインアップできないように制御できます。

Cognitoが用意している属性があるので、必須なものがある場合は選択しておきましょう。

カスタム属性 - オプション

カスタム属性

Cognitoが用意していない独自の属性(データ)を持たせたい場合は、

カスタム属性を作って、受け取れる枠を用意しましょう。

メッセージ配信を設定

Eメール

Eメールプロバイダー

Cognitoからユーザーにメッセージを送信する際に、SESかCognito

どちらから送信するかを選択します。

メッセージを送信する予定がある場合は、SESを選択したほうが良いでしょう。

主に、サインアップ時のメールアドレス検証だったり、多要素認証だったりです。

今回は特に必要ないため、Cognitoを選択します。

アプリケーションを統合

ユーザープール名

ユーザープール名

ユーザープールの名前を決めます。

日本語は使用できません。

ホストされた認証ページ

ホストされた認証ページ

Cognitoが用意してくれているページを使って、サインアップやサインインを行うか、

独自に作った画面やAPIで行うかを選択します。

今回はAPIで行うので、使用しません。

最初のアプリケーションクライアント

アプリケーションタイプ

Cognitoからではなく、独自に用意した環境からAPIを使用する際に、

ユーザープールに許可させるための設定です。

パブリッククライアントだと、ユーザープール作成時に払い出される

「ユーザープールID」と「クライアントID」で、APIを叩くことができます。

秘密クライアントは、そのほかに「シークレットID」が必要になります。


アプリケーションクライアント名

アプリケーションクライアントの名前を決めます。

日本語は使用できません。


クライアントシークレット

ここはアプリケーションタイプを選択したときに、デフォルトで選択されます。

基本的にはデフォルトのままでよいです。

高度なアプリケーションクライアントの設定

認証フロー

認証フローを選択できます。

基本的にはデフォルトの「ALLOW_USER_SRP_AUTH」で、問題ないと思います。

必要に応じて変更しましょう。


期限

各種トークンの有効期限等を細かく設定できます。


高度なセキュリティ設定

オプションの設定なので、変更の必要がある方だけ変更しましょう。

属性の読み取りおよび書き込み許可

属性の読み取りおよび書き込み許可

必要のある属性だけ、読み取りや書き込みを許可しましょう。

タグ

タグ

タグを設定します。

コスト管理やアクセスコントロールに使用します。

確認および作成

最後に入力内容の確認を行い、ユーザープールの作成は完了です。

まとめ

AWSのCognitoでユーザープールを作成してみました。

本当にいろいろな設定ができるため、難しいですね…。


もっとAWS勉強して使いこなせるようになりたいです。


以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント一覧

名無し  より

  2024/07/02 16:13:47

ユーザープール作成の画面が古い情報が多く困っていました。 設定ごとの丁寧な説明も非常に分かりやすかったです。 有益な情報をありがとうございます!

コメントに返信返信キャンセル

コメント(必須※500文字以内)

お名前(必須※30文字以内)

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

管理者  より

  2024/07/02 18:27:04

コメントありがとうございます! こちらこそ、お役に立ててよかったです。

コメントに返信する

コメント(必須※500文字以内)

お名前(必須※30文字以内)

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

コメントを投稿してみる

コメント(必須※500文字以内)

お名前(必須※30文字以内)

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)