こんにちは!
Cognito で認証を構築する際は、ユーザーに対し何の属性値でサインインさせるのかを事前に設計しなければいけません。デプロイ後に設定変更できないので、きちんと考えたいところです・・・。
本記事では、ユーザーのサインインで指定できる属性値に関する UsernameAttributes と AliasAttributes について解説します。
ユーザプールサインインに関する内容を中心に書きますので、ID プールの内容については一切触れません。
UsernameAttributes と AliasAttributes は ID プールに関連するものではありません。
UsernameAttributes と AliasAttributes の該当箇所はこちらです。CloudFormation に関するドキュメントはこちらです。
Type: 'AWS::Cognito::UserPool'
Properties:
...
AliasAttributes:
- email
- preferred_username
UsernameAttributes:
- email
...
尚、AliasAttributes または UsernameAttributes どちらか一方しか定義できませんのでご注意ください。
それぞれのサインインに関する動作の違いは下記になります。
従ってそれぞれのユースケースは下記となります。
username または Email, Phone_number, preferred_username (任意のユーザー名) 属性とパスワードでのサインインをしたい場合に使用します。
Email, Phone_number 属性とパスワードでのみサインインをしたい場合に使用します。
AliasAttributes に対して、サインインに指定可能な属性値が少ないのがポイントです。
間違ってはいないです、動作上問題ないので機能的にも問題ないと言えるでしょう。
ただ、UsernameAttributes を使用しサインインの方法をより明示的にすることで、第三者がアーキテクチャー(サインインの方法)を見るときにわかりやすくなるメリットがあります。
わたし達が認証を構築する際は、まずどんな属性情報でサインインするかをヒアリングします。
例えば業務アプリであれば Email とパスワードのみが主流なので、その場合はUsernameAttributes の使用を検討しますし、逆にサインイン属性が多そうな場合は AliasAttributes を使用します。( toC 向けのアプリケーションなどの場合には有効ですね)
AWS Cognito の構築についてはお気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎