Cognito ユーザプールでパスワードとして日本語などの文字種が登録できるのはなぜでしょうか?

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Cognito ユーザプールを使用した認証機能を実装しております。
しかし、ドキュメントに記載のパスワードとして使用できる要件にない文字が、パスワードとして登録できてしまいます。
例えば、日本語全角("あ", "中野" 等)や特殊文字("-" 等)などの文字です。登録できないようにする方法はございますか?

どう対応すればいいの?

ユーザープールでは ASCII 表(または「基本的なラテン文字」)範囲外である日本語などのマルチバイト文字入力は受け付けられる動作となっています。

この動作について、ユーザープールのパスワードポリシー設定機能では制限することができず、ユーザープールのその他の機能でマルチバイト文字を禁止することもできません。
また、パスワードポリシーでは特定の特殊文字を含むよう強制することが可能ですが、"-" など一覧に含まれていない特殊文字の使用を禁止することはできません。

マルチバイト文字など特定の文字種をパスワードで使用するのを禁止するためには、Cognito ユーザプールを利用するアプリケーション側で文字種制限を実装してください。

参考資料