[アップデート] Cognito ユーザープールでユーザーエイリアスの大文字、小文字の区別を無効化できるようになりました!

Cognito ユーザープールのユーザーエイリアスで大文字、小文字の区別を無効化できるようになりました!
2020.02.13

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

本日のアップデートで、Cognito ユーザープールのユーザーエイリアスで、大文字・小文字の区別をさせない設定をできるようになりました。

何が嬉しいのか

これまで Cognito では、ユーザー名や優先ユーザー名、メールエイリアスにおいて大文字・小文字が区別されていました。例えば marumo@classmethod.jpMarumo@classmethod.jp は異なるメールエイリアスとして別ユーザとして登録できてしまいました。

初めて Cognito を利用される場合、この大文字と小文字が区別されてしまうことに戸惑いを感じる方も少なくなかったかと思います。

従来はこれらを許容したくない場合、Lambda と連携させてユーザー側で作り込みをする必要がありました。

今回のアップデートによって、ユーザープール作成時のパラメータで「大文字・小文字を区別しない」と設定するだけで、これらの実装が不要となりましたので、非常にうれしいアップデートかと思います。

なお、この設定は Cognito を利用できるすべてのリージョンで利用可能です。

やってみる

ユーザープールの作成画面に進み、[Attributes] を開きます。[How do you want your end users to sign in?] の下部に (Recommended) Enable case insensitivity for username input の項目が増えていますので、こちらにチェックを入れるだけです。(デフォルトでチェックが入るようになっています)

設定はこれだけです。簡単ですね!

動作確認

それでは動作確認してみましょう。まず従来だと Username に、このように marumoMarumo を登録することが可能でした。

次に、大文字・小文字の区別を無効化したユーザープールで試してみましょう。まず、以下のように marumo が存在します。

ここに、これまでと同じように Marumo を追加しようとすると…

User account already exists となり、エラーになることが確認できました!

メールエイリアスでも同様です。事前に marumo@classmethod.jp というメールエイリアスのユーザを登録している状態で、Marumo@classmethod.jp を登録しようとすると、以下のようにエラーになります。

簡単ではありますが、検証は以上です。

注意点

  • 既存のユーザープールは大文字・小文字の区別がされます
  • Cognito API を介してユーザープールを作成する場合は、デフォルトで大文字と小文字を区別されるようになっています

API のデフォルト値については、下記のとおり、十分な周知連絡を行ったうえで、将来的にデフォルト設定を変更する予定はあるようです。

We will change the default setting for the API in the future after a customer notification campaign.

さいごに

Cognito を利用される場合に大文字、小文字が区別されてしまうことに戸惑いを感じたユーザーは少なくないかと思います。今回のアップデートによって、ユーザー側で実装することなく、大文字、小文字の区別を制限できるようになり、また一つ使いやすくなりましたね!

以上!大阪オフィスの丸毛(@marumo1981)でした!

リファレンス