Contents
AWS Cognito ユーザープール導入の基本と目的
AWS Cognito ユーザープールは、Webやモバイルアプリケーションでユーザー認証・認可を効率的に行うためのソリューションです。OAuth 2.0やOpenID Connect(OIDC)との連携が可能であり、企業向けサービスから個人アプリまで幅広く活用できます。この記事では、AWSマネジメントコンソールとCLIでの設定手順をステップバイステップで解説し、実務における導入サポートを行います。
AWSマネジメントコンソールによるユーザープールの作成手順
AWSマネジメントコンソールは、視覚的にわかりやすく操作できるため、初心者にもおすすめです。以下に基本的な作成フローを解説します。
アカウント準備とダッシュボードアクセス
AWSアカウントをお持ちでない場合は、無料トライアルを活用してアカウントを作成してください。その後、AWS Management Consoleにログインし、「Cognito」サービスを開きます。
プールの基本設定(名前・認証タイプなど)
- 「ユーザープール作成」ボタンをクリックします。
- ユーザープールの名称を入力し、認証タイプとして「メールアドレスまたは電話番号」と「パスワード」を選択します。
- 次の画面で、MFA(Multi-Factor Authentication)の有効化はお好みで(ここでは省略)。
注意: 会社での導入時は、セキュリティポリシーを厳格にする必要があります。
メール/電話番号認証の構成
- 「メールアドレス」や「電話番号」の使用を有効化します。
- メールテンプレートをカスタマイズする場合、後述のセクションで詳しく解説します。
CLIコマンドによるユーザープールのプログラムマティックな構成
AWS CLIは、スクリプトやCI/CDパイプラインでの自動化に最適です。以下に設定手順を紹介します。
AWS CLIのインストールと認証設定
- AWS CLI v2以降を公式サイトからダウンロード・インストールします。
aws configureコマンドでアクセスキーとシークレットアクセスキーを入力します。
create-user-poolコマンドの実行例
|
1 2 3 4 5 |
aws cognito-idp create-user-pool \ --pool-name "SampleUserPool" \ --auto-verified-attributes email \ --schema '[{"Name":"email","AttributeDataType":"String","Required":true}]' |
カスタム属性の定義テンプレート
|
1 2 3 4 5 6 7 8 9 |
{ "Attributes": [ { "Name": "custom:department", "AttributeDataType": "String" } ] } |
このJSONをcreate-user-poolコマンドの--schemaオプションで適用します。
セキュリティポリシーとMFAの設定
セキュリティはユーザープール導入の基本です。以下に推奨される設定と手順を解説します。
パスワードポリシーの強度設定
| 項目 | 値 | 補足 |
|---|---|---|
| 最小文字数 | 12文字以上 | OWASP基準に沿う |
| 大文字/小文字 | 必須 | |
| 数字・記号 | 必須 |
アカウントロックアウトポリシー
- 失敗回数上限: 5回(30分間)
- リセット方法: メールアドレスにリセットリンクを送信
ベストプラクティス: MFAと組み合わせて、不正アクセスリスクを最小限に抑えましょう。
MFA(Multi-Factor Authentication)の有効化手順
MFAはセキュリティ向上に不可欠です。以下の方法で設定できます。
認証フローの選択(SMS/トークンアプリ)
- ユーザープール編集画面で「Multi-Factor Authentication」を有効化します。
- SMSまたは「Authy」「Google Authenticator」などのトークンアプリを選択。
管理者ユーザーでのテスト手順
- 作成した管理者アカウントでログインし、MFA設定の画面にアクセス。
- 登録されたデバイスで認証コードを入力して確認します。
OAuth 2.0/OIDCの構成とアプリケーション連携
OAuth 2.0やOIDCとの連携は、外部アプリケーションとの統合が可能です。
認証プロバイダー登録手順
- 「App client」を新規作成し、Client IDとClient Secretを取得します。
- リダイレクトURIを設定(例:
https://example.com/callback)。
フロントエンドアプリとの接続テスト
OAuth認証フローの具体例を以下に示します。
JavaScriptでの実装例
|
1 2 |
const authUrl = `https://${userPoolDomain}/oauth2/authorize?response_type=code&client_id=${clientId}&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback`; |
注意:
userPoolDomainはcreate-user-pool-domainコマンドで取得し、clientIdはアプリクライアント作成時に確認します。
カスタム属性とメール認証の詳細設定
ユーザー登録フォームをカスタマイズすることで、企業向けアプリや専用サービスに最適化できます。
属性タイプの追加手順
- 「Attributes」セクションで「Add attribute」と選択。
- custom:departmentのようなカスタム属性を定義します。
補足: カスタム属性は
create-user-poolコマンドの--schemaオプションで一括設定可能です。
メールテンプレートカスタマイズ
- ユーザーに送信されるメール内容(例: 確認コードやパスワードリセットリンク)を編集可能です。
- 重要なのは、バウンスメール対策として、AWS SESと連携してサンドボックスモードを活用することです。
カスタムドメインの設定手順
カスタムドメインを使用することで、ブランドイメージを強化できます。
create-user-pool-domainコマンドの実行例
|
1 2 3 4 |
aws cognito-idp create-user-pool-domain \ --domain "example.com" \ --user-pool-id <user-pool-id> |
注意:
create-user-pool-domainは、メール認証やOAuthフローに使用されるドメインを設定するコマンドです。
注意事項とよくある質問
- CLIコマンドの誤用: カスタム属性は常に
create-user-poolで定義し、create-user-pool-domainはドメイン登録にのみ使用します。 - セキュリティポリシーの重複: MFAとパスワードポリシーは連携して設定することで、リスクを最小限に抑えましょう。
- OAuthフローの詳細:
userPoolDomainは「Cognito User Pools」→「Domains」から確認でき、clientIdはアプリクライアント作成時に取得可能です。