メインコンテンツへスキップ
ユーザーのサインアップを制限したり、アプリケーションのアカウントを一括作成したりするために、アプリケーションはユーザーの招待を使用してユーザーをプロビジョニングできます。
Organizationメンバーの招待は、この記事にあるユーザー招待ワークフローとは異なります。この記事では、特定のアプリケーションのコンテキストでアカウントのサインアップへの招待を生成する方法について説明しています。Organizations機能でメールを使ってメンバーを組織に招待したい場合には、「組織メンバーを招待する」をお読みください。
一般的なユーザーの招待ワークフローは以下の手順に従います。
  1. 管理者はユーザーアカウントを作成します。
  2. 管理者は登録メール招待状をユーザーに送信します。
  3. ユーザーは招待状メールのリンクに従って、アカウントのパスワードをセットアップします。
  4. ユーザーはパスワードを作成し、検証します。
  5. ユーザーがサインインします。

招待状の作成

ユーザーの招待は基本的に、招待として再利用されたパスワード変更リンクです。ユーザー招待メールは、「パスワード変更」テンプレートから派生します。Auth0 では、ユーザーの招待を実装するための一般的なアプローチが2つあります。 ユーザーに代わって作成した既存のアカウントにユーザーがアクセスできるようにすることができます。次に、ユーザーにパスワードを設定するための固有のリンクを送信します。招待アプリが/password-changeManagement APIエンドポイントを呼び出すパスワード変更チケットを作成することにより、一意のリンクを生成します。以下を行う必要があります。

パスワード変更チケットを作成する

  1. Management APIエンドポイントuser_idまたはメールとconnection_idを使用してユーザーを指定します。
  2. リダイレクトによってユーザーを送信する場所を指定します。result_urlパラメーターは、ユーザーがパスワードを設定した後にアプリケーションがユーザーに送信するリダイレクトの場所です。この場合、result_urlはアプリのログインページでなければなりません。詳細については、「ログイン後にユーザーをリダイレクトする」をお読みください。以下に示すclient_idパラメーターを使用することもできます。顧客がメールを確認すると、クライアントのデフォルトのログインURIにリダイレクトされます。
  3. 招待リンクの有効期間を指定します。ttl_secパラメーターを使用して、招待リンクがアクティブな期間を設定します。ttl_secパラメーターは、関連するセキュリティ上の懸念事項に合わせて調整する必要があります。リンクは1回限りの使用であるため、ユーザーがパスワードを設定すると、再利用される危険性はありません。
  4. メールアドレスを確認します。登録済みのメールアカウントに送信する場合は、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}'

クエリーパラメーターチケットURLを追加する

クエリーパラメーターをURLに追加して、パスワードリセットUIをカスタマイズできます。返されるURLには、ユーザーがパスワードとその後に続く#を設定できる一意のコード値が含まれます。#より前の部分は編集しないでください。 パラメーターを追加して、設定パスワードワークフローUIを指定します。例:
#type=invite
パラメーターを追加してターゲットアプリを識別します。例:
#app=AppName

メールテンプレート作成する

メールの招待状は、既存のメールサービスプロバイダーを使用して送信する必要があります。パスワード変更メールテンプレートをカスタマイズして、メール内の言語がユースケースに合うようにします。上記手順で生成されたリンクを含めます。メール内のテキストは次を説明します。
  • ユーザーアカウントを要求する次の手順。
  • リンクの有効期限。
  • 有効期限が切れた場合の新しい招待を生成するための手順。
たとえば、招待するユーザーを作成するときに、このユーザーアカウントが招待されたことを示すプロパティをuser.app_metadataに追加することができます。さらに、メールテンプレートでこのプロパティをチェックできます。
{% if user.app_metadata.invitedToMyApp == true %}
  // user invitation email
{% else %}
  // password change email
{% endif %}

パスワードリセットUIをカスタマイズする

ユーザーが招待内のリンクをクリックすると、ユニバーサルログインパスワードリセットページに移動し、アカウントのパスワードを設定できます。このページは、パスワードを忘れた場合のワークフローとユーザーの招待の両方に使用されるため、以前に定義したクエリパラメーターを使用して招待ワークフローを識別し、それに応じてUIをカスタマイズする必要があります。詳細については、「パスワードリセットページをカスタマイズする」をお読みください。

ユーザーエクスペリエンスを完了する

大半のケースにおいて、ユーザーがパスワードを設定すると、対象アプリへのアクセスを許可します。ターゲットアプリは次の手順でログインシーケンスを開始します。
  1. ユーザーはパスワードを送信します。
  2. パスワード変更画面がリダイレクトされ、URLが返されます。
  3. ターゲットアプリは/authorizeにリダイレクトします。
  4. ユーザー資格情報提出します。
  5. ユーザーはアプリに認証されます。
ワークフローにはリダイレクトが含まれますが、パスワード設定フォームからログインフォームへの移行がエンドユーザーにとってシームレスに見える可能性があります。 クラシックログインを使用している場合、パスワード変更チケットの作成時に設定したresult_urlは、ユーザーがパスワードを作成した後にリダイレクトされる場所になります。この場合、ログインワークフローを開始できるように、URLをユーザーが招待されたサイトに配置する必要があります。ターゲットアプリは、successパラメーターを解析してエラーが発生していないことを確認してから、すぐにAuth0へのリダイレクトを開始してユーザーをログインさせる必要があります。 ユーザーエクスペリエンスを最適化するには、ターゲットアプリでemailパラメータを解析し、それをlogin_hintパラメータとして認証要求に含めることができます。これにより、ログインフォームにユーザーのメールアドレスが事前に入力されます。

もっと詳しく

I