ユーザープールでは、ユーザーにサインアップを許可するか、ユーザーを管理者として作成できます。また、サインアップ後の検証と確認のプロセスを、どの程度ユーザーに委ねるかを制御できます。例えば、サインアップを確認して、外部の検証プロセスに基づいてサインアップを承認できます。この設定 (管理者作成ユーザーポリシー) では、ユーザーが自分のユーザーアカウントを確認できなくなるまでの時間も設定します。
Amazon Cognito は、ソフトウェアのカスタマー ID およびアクセス管理 (CIAM) プラットフォームとして、一般顧客のニーズに応えることができます。サインアップを受け入れるユーザープールにアプリケーションクライアントがある場合は、ホストされた UI の有無にかかわらず、一般に検出可能なアプリケーションクライアント ID を使用してインターネットからサインアップをリクエストしたすべてのユーザーに対してユーザープロファイルを作成します。サインアップしたユーザープロファイルは、アクセストークンと ID トークンを受け取り、アプリケーション用に承認されたリソースにアクセスできます。ユーザープールでサインアップを有効にする前に、オプションを確認し、設定がセキュリティ基準に準拠していることを確認してください。[自己登録を有効化] と AllowAdminCreateUserOnly
を、以下の手順で説明するように注意して設定します。
ユーザープールの [サインアップエクスペリエンス] タブと、ユーザープール作成ウィザードの [サインアップエクスペリエンスを設定] ステップには、ユーザープール内のユーザーのサインアップと管理作成に関する設定の一部が含まれています。
サインアップエクスペリエンスを設定するには
-
[Cognito による検証と確認] で、[Cognito が検証と確認のためのメッセージを自動的に送信することを許可] するかどうかを選択します。この設定を有効にすると、Amazon Cognito はユーザープールに提示する必要があるコードを含む E メールまたは SMS メッセージを新規ユーザーに送信します。これにより、E メールアドレスまたは電話番号の所有権が確認され、同等の属性が検証済みとして設定され、ユーザーアカウントのサインインが確認されます。選択した [検証する属性] により、検証メッセージの配信方法と送信先が決まります。
-
[属性変更の確認] は、ユーザーの作成時には重要ではありませんが、属性の検証に関係します。[サインイン属性] を変更したが、まだ検証していないユーザーに対して、新しい属性値または元の属性値を使用して引き続きサインインすることを許可できます。詳細については、「ユーザーが E メールまたは電話番号を変更するときに確認する」を参照してください。
-
[必須の属性] には、ユーザーのサインアップやユーザーの作成前に値を指定する必要がある属性が表示されます。必須の属性は、ユーザープールの作成ウィザードでのみ設定できます。
-
カスタム属性は、ユーザーの作成とサインアップのプロセスにとって重要です。イミュータブルなカスタム属性の値を設定できるのは、ユーザーの初回作成時のみであるためです。カスタム属性の詳細については、「カスタム属性」を参照してください。
-
認証されていない
SignUp
API を使用して新しいアカウントを生成することをユーザーに許可する場合は、[セルフサービスのサインアップ] で、[自己登録を有効化] を設定します。自己登録を無効にした場合は、Amazon Cognito コンソールまたは AdminCreateUser API リクエストで新しいユーザーを管理者としてのみ作成できます。自己登録が非アクティブなユーザープールでは、SignUp API リクエストがNotAuthorizedException
を返し、ホストされた UI に [サインアップ] リンクが表示されません。
管理者としてのユーザーを作成する予定のユーザープールでは、[サインインエクスペリエンス] タブの [管理者が設定した一時パスワードの有効期限] で一時パスワードの有効期間を設定できます。
管理者としてのユーザーを作成する場合の別の重要な要素は、招待メッセージです。新しいユーザーを作成すると、Amazon Cognito はアプリへのリンクを含むメッセージをユーザーに送信し、初回のサインインができるようにします。このメッセージテンプレートを [メッセージング] の [メッセージテンプレート] でカスタマイズします。
[機密アプリクライアント] (通常はウェブアプリケーション) には、アプリクライアントシークレットがないとサインアップできないようにするクライアントシークレットを設定できます。セキュリティ上のベストプラクティスとして、パブリックアプリクライアント (通常はモバイルアプリ) にはアプリクライアントシークレットを配布しないでください。クライアントシークレットを使用したアプリケーションクライアントは、Amazon Cognito コンソールの [アプリケーションの統合] タブで作成できます。