アプリケーションサインアップのためのメール招待状を送信する
ユーザーのサインアップを制限したり、アプリケーションのアカウントを一括作成したりするために、アプリケーションはユーザーの招待を使用してユーザーをプロビジョニングできます。
一般的なユーザーの招待ワークフローは以下の手順に従います。
管理者はユーザーアカウントを作成します。
管理者は登録メール招待状をユーザーに送信します。
ユーザーは招待状メールのリンクに従って、アカウントのパスワードをセットアップします。
ユーザーはパスワードを作成し、検証します。
ユーザーがサインインします。
招待状の作成
ユーザーの招待は基本的に、招待として再利用されたパスワード変更リンクです。ユーザー招待メールは、「パスワード変更」テンプレートから派生します。Auth0 では、ユーザーの招待を実装するための一般的なアプローチが2つあります。
メールテンプレートのカスタマイズと、それを使用したパスワード変更メールの送信です。
パスワード変更チケットを作成します。
ユーザーに代わって作成した既存のアカウントにユーザーがアクセスできるようにすることができます。次に、ユーザーにパスワードを設定するための固有のリンクを送信します。招待アプリが/password-change
Management APIエンドポイントを呼び出すパスワード変更チケットを作成することにより、一意のリンクを生成します。以下を行う必要があります。
user.email_verified
パラメーターをfalse
に設定してAuth0データベースユーザーを作成します。ユーザー作成エンドポイントを使用できます。
パスワード変更チケットを作成する
Management APIエンドポイントに
user_id
またはメールとconnection_id
を使用してユーザーを指定します。リダイレクトによってユーザーを送信する場所を指定します。
result_url
パラメーターは、ユーザーがパスワードを設定した後にアプリケーションがユーザーに送信するリダイレクトの場所です。この場合、result_url
はアプリのログインページでなければなりません。詳細については、「ログイン後にユーザーをリダイレクトする」をお読みください。以下に示すclient_id
パラメーターを使用することもできます。顧客がメールを確認すると、クライアントのデフォルトのログインURIにリダイレクトされます。招待リンクの有効期間を指定します。
ttl_sec
パラメーターを使用して、招待リンクがアクティブな期間を設定します。ttl_sec
パラメーターは、関連するセキュリティ上の懸念事項に合わせて調整する必要があります。リンクは1回限りの使用であるため、ユーザーがパスワードを設定すると、再利用される危険性はありません。メールアドレスを確認します。登録済みのメールアカウントに送信する場合は、
mark_email_as_verified
パラメーターをtrue
に設定します。メールアカウントが登録されていない場合には、メール検証をtrue
に設定しないでください。このエンドポイントの要求が成功すると、チケットURLを返します。このURLを使用してユーザーの招待を作成します。
詳細については、「デフォルトのログインルートを構成する」をお読みください。
curl -- request POST \
--url 'https://{yourAuth0Tenant}/api/v2/tickets/password-change' \
--header "Content-Type: application/json" \
--data '{"user_id":,{yourUserID}","client_id":"{yourClientID","ttl_sec":0,"mark_email_as_verified":true,"includeEmailInRedirect":false}'
Was this helpful?
クエリーパラメーターチケットURLを追加する
クエリーパラメーターをURLに追加して、パスワードリセットUIをカスタマイズできます。返されるURLには、ユーザーがパスワードとその後に続く#
を設定できる一意のコード値が含まれます。#
より前の部分は編集しないでください。
パラメーターを追加して、設定パスワードワークフローUIを指定します。例:
#type=invite
Was this helpful?
パラメーターを追加してターゲットアプリを識別します。例:
#app=AppName
Was this helpful?
メールテンプレート作成する
メールの招待状は、既存のメールサービスプロバイダーを使用して送信する必要があります。パスワード変更メールテンプレートをカスタマイズして、メール内の言語がユースケースに合うようにします。上記手順で生成されたリンクを含めます。メール内のテキストは次を説明します。
ユーザーアカウントを要求する次の手順。
リンクの有効期限。
有効期限が切れた場合の新しい招待を生成するための手順。
たとえば、招待するユーザーを作成するときに、このユーザーアカウントが招待されたことを示すプロパティをuser.app_metadata
に追加することができます。さらに、メールテンプレートでこのプロパティをチェックできます。
{% if user.app_metadata.invitedToMyApp == true %}
// user invitation email
{% else %}
// password change email
{% endif %}
Was this helpful?
パスワードリセットUIをカスタマイズする
ユーザーが招待内のリンクをクリックすると、ユニバーサルログインパスワードリセットページに移動し、アカウントのパスワードを設定できます。このページは、パスワードを忘れた場合のワークフローとユーザーの招待の両方に使用されるため、以前に定義したクエリパラメーターを使用して招待ワークフローを識別し、それに応じてUIをカスタマイズする必要があります。詳細については、「パスワードリセットページをカスタマイズする」をお読みください。
ユーザーエクスペリエンスを完了する
大半のケースにおいて、ユーザーがパスワードを設定すると、対象アプリへのアクセスを許可します。ターゲットアプリは次の手順でログインシーケンスを開始します。
ユーザーはパスワードを送信します。
パスワード変更画面がリダイレクトされ、URLが返されます。
ターゲットアプリは
/authorize
にリダイレクトします。ユーザー資格情報提出します。
ユーザーはアプリに認証されます。
ワークフローにはリダイレクトが含まれますが、パスワード設定フォームからログインフォームへの移行がエンドユーザーにとってシームレスに見える可能性があります。
クラシックログインを使用している場合、パスワード変更チケットの作成時に設定したresult_url
は、ユーザーがパスワードを作成した後にリダイレクトされる場所になります。この場合、ログインワークフローを開始できるように、URLをユーザーが招待されたサイトに配置する必要があります。ターゲットアプリは、success
パラメーターを解析してエラーが発生していないことを確認してから、すぐにAuth0へのリダイレクトを開始してユーザーをログインさせる必要があります。
ユーザーエクスペリエンスを最適化するには、ターゲットアプリでemail
パラメータを解析し、それをlogin_hint
パラメータとして認証要求に含めることができます。これにより、ログインフォームにユーザーのメールアドレスが事前に入力されます。