PHPで Amazon Cognito を使用した認証機能の導入 その1:AWSの設定
PHPで Amazon Cognito を使用した認証機能の導入 その1:AWSの設定
ユーザー認証システムとしてAmazon Cognitoを利用する場合に、
JavaScriptやPythonを使わずあえて『PHP』でやりたいという方のための覚書になります。
※本記事は2023年4月のAWSコンソールを元に書かれています。
それ以降は画面が変更されている可能性があります。
使用ツールは「AWS SDK for PHP – Version 3」
Github
フロントはCakePHP4で作成していますがお好みで。
Amazon Cognito の準備
PHPを利用する前にAmazon Cognito側の準備をします。
SDKを利用してユーザープールを作ることはできますが、
権限などの設定をしてないと不明なエラーを返してくるので先にコンソールで設定した方が無難です。
例えばAmazon SESの機能を利用しなくても、ユーザープールを作る際にAmazon SESの権限が必要です。
権限がない場合はAmazon Cognitoを触る前に権限の付与を上司に依頼しましょう。
ユーザープールの作成
このサイドメニュー名に合わせてザックリ解説
ステップ1 サインインエクスペリエンスを設定
・「Cognito ユーザープール」を使用
・「ユーザープールのサインインオプション」を「Eメール」に設定
※他のを使いたい場合はお好みで
パスワードポリシー
・「パスワードポリシーモード」はお好みで
・「多要素認証」は「オプションの MFA」を使用
※後でSMSを使用した他要素認証を利用するため
・「ユーザーアカウントの復旧」はそのまま。
サインアップエクスペリエンスを設定
・全部そのままでも問題はありません。必要に応じて変更してください。
E メール
・「E メールプロバイダー」を「Cognito で E メールを送信」に設定。
・「SMS」は「新しいIAMロールを作成」に設定しロール名は適当に。
※最初の簡単な認証を作る際には利用しません
アプリケーションを統合
・「ユーザープール名」と「アプリケーションクライアント名」はお好みで。
・他はそのままで問題なし。
ユーザープールの設定確認
SDKでユーザーを作る前にユーザープールの設定を確認します。
タブ「メッセージング」(お好みで変更)
「メッセージテンプレート」
・検証メッセージ
パスワードを変更する場合などの変更用コードが送信されるときのテキスト
・招待メッセージ
最初にメールアドレスを登録したときに送られてくる仮パスワードのテキスト
・MFA メッセージ
SMS認証等を設定した際、ログイン時に送られてくるSMSのテキスト
タブ「アプリケーションを統合」→「アプリクライアントと分析」
・クライアントIDをメモ
・「アプリケーションクライアント情報を編集」
「認証フロー」の「ALLOW_ADMIN_USER_PASSWORD_AUTH」にチェックを入れる
なおSMS認証を使わない場合は「ALLOW_USER_PASSWORD_AUTH」でも良いと思われます。
タブ「ユーザープールのプロパティ」
・ユーザープールIDをメモ
次回予告
以上でAmazon Cognitoの設定とユーザープールの作成は終了。
次回からPHP SDKの利用。
次回:その2:一般的な認証