Amplify Gen2でパスワードポリシーをカスタマイズする方法
こんにちは、新入社員の西村です。
今回は、Amplify Gen2のパスワードポリシーについてお話しします!
現在、開発を進めているプロジェクトでは、Amplify Gen2やBedrockを使用してWebアプリを作成しています。社内でGen2を触ったことがある人がほぼいないため、公式ドキュメントやAmplifyのDiscordコミュニティで質問したり、Qiitaなど先人のテックブログを参考にしながら、何とか開発を進めています!
AmplifyGen1とGen2の違いについては今回触れませんが、こちらの記事がとても分かりやすいです。
パスワードポリシーをカスタマイズしてみた
今回は、実際にプロジェクトに入る前の実験として簡単なWebアプリを作成しました。
テストアプリですし、IDやパスワードは最低限の状態で問題ないため、6文字の小文字と数字だけに設定したい。。。
そこで、公式ドキュメントを参考にしながら、Amplify Authのパスワードポリシーをカスタマイズしてみました。
※環境構築などの手順は省略
デフォルトのパスワード設定
まず、Amplify Authのデフォルト設定は以下の通りです。
- 最小文字数: 8文字
- 小文字の必須: 有効
- 大文字の必須: 有効
- 数字の必須: 有効
- 記号の必須: 有効
- 一時パスワードの有効期間: 3日
今回はこれらの設定を変更していきます。
パスワードポリシーの変更方法
amplify/backend.tsファイルを編集し、パスワードポリシーを以下のようにカスタマイズします。
import { defineBackend } from '@aws-amplify/backend';
import { auth } from './auth/resource';
const backend = defineBackend({
auth,
});
// L1のCfnUserPoolリソースを取得
const { cfnUserPool } = backend.auth.resources.cfnResources;
// パスワードポリシーを変更
cfnUserPool.policies = {
passwordPolicy: {
minimumLength: 6,
requireLowercase: true,
requireNumbers: true,
requireSymbols: false,
requireUppercase: false,
temporaryPasswordValidityDays: 3,
},
};
ポリシー設定のポイント
- minimumLength: パスワードの最小文字数を6に設定
- requireLowercase: 小文字を必須に設定(true)
- requireNumbers: 数字を必須に設定(true)
- requireSymbols: 記号は不要なのでfalseに設定
- requireUppercase: 大文字は不要なのでfalseに設定
カスタマイズ後の確認
設定を変更した後、実際にユーザー登録を行い、パスワードポリシーが正しく適用されているか確認し、6文字の小文字と数字のみのパスワードで無事に登録できました!
注意点
パスワードポリシーを緩和することは、セキュリティリスクを増大させる可能性があります!
本番環境で使用する場合は、セキュリティ要件を十分に考慮した上で設定を行うことが重要です。
まとめ
今回は、Amplify Authのパスワードポリシーをカスタマイズする方法をご紹介しました。公式ドキュメントを参照しつつ、自分の要件に合わせて設定を変更することで、柔軟な認証機能を実装できます。
今後も、Amplify Gen2やBedrockを活用した開発の中で得た知見を共有していきたいと思います!
参考記事