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を活用した開発の中で得た知見を共有していきたいと思います!

参考記事