Skip to main content

始める前に

  1. ご利用のテナントで カスタムドメイン が設定されていることを確認します。
  2. すべての Signup プロンプト と Login プロンプトで Universal Login を使用していることを確認し、ログインプロンプトで Customize Login Page トグルが無効になっていることを確認します。
  3. Custom Page Template が設定されていることを確認します。
Signup プロンプト と Login プロンプトをカスタマイズする は、 と Custom Page Template を有効にしているお客様が、アプリの Signup プロンプト と Login プロンプトにカスタムフィールドやコンテンツを追加できる機能です。

ユースケース

Signup プロンプト と Login プロンプト のカスタマイズでは、カスタムコンテンツデータ取得という 2 つのユースケースをサポートしています。 カスタムコンテンツとは、Signup プロンプト と Login プロンプト に直接配置する、テキスト、リンク、画像などの静的コンテンツです。 データ取得では、Signup プロンプト と Login プロンプト にフォーム要素を動的に追加します。これは、ユーザーの同意や、姓のようなユーザーが入力したデータを収集して検証する場合に役立ちます。
機微情報または規制対象データの伝達や収集を目的として Signup プロンプト と Login プロンプト のカスタマイズを使用する場合は、Okta との契約で許可されている範囲に限ってください。

用語

プロンプト は、特定の認証フロー内の 1 つのステップです。各 プロンプト には少なくとも 1 つの画面があり、テナントの設定に応じて、サポートされる各画面には 4 つまたは 6 つのエントリポイントがあります。エントリポイントとは、カスタムコード (partials) を画面内に挿入できる位置のことです。 次の プロンプト はカスタマイズできます。 ログイン画面
  • login
  • login-id
  • login-password
  • login-passwordless-sms-otp
  • login-passwordless-email-code
  • passkey-enrollment
  • passkey-enrollment-local
Signup 画面
  • signup
  • signup-id
  • signup-password
  • passkey-enrollment
  • passkey-enrollment-local
partials では、条件分岐や動的変数を扱うために、HTML、CSS、JavaScript、Liquid 構文を使用できます。さらに、Page Templateで利用可能な Liquid 変数もすべてサポートされています。 これらのエントリポイントは、データベース接続またはパスワードレス接続が有効になっている場合に利用できます。
  • form-content-start
  • form-content-end
  • form-footer-start
  • form-footer-end
少なくとも 1 つのソーシャル接続またはエンタープライズ接続が有効になっている場合は、次のエントリポイントを利用できます。
  • secondary-actions-start
  • secondary-actions-end
各 Custom プロンプト オプションとその partials のスクリーンショット

Auth0 DashboardでPartialsを管理する

Auth0 Dashboardでは、partials を使用して Login 画面や Signup 画面にカスタムフィールドやコンテンツを挿入できます。
  1. Auth0 Dashboard > Branding > Universal Login に移動し、Enhance screens with partials を選択します。
  2. partials エディターでカスタマイズする 画面 を選択します。
画面 では、次の レンダリングモード を使用できます。
  • STANDARD: screen はデフォルトの Universal Login UI を使用してレンダリングされます。partials を使うと、コードスニペットや template variables を挿入できます。
  • ADVANCED: screenACUL を使用してレンダリングされるため、partials は適用されません。
  • ADVANCED (FILTERED): screen は、特定のアプリケーションと組織に対して ACUL を適用した状態でレンダリングされます。partials は、ACUL フィルターの対象外となる screens にのみ適用されます。
  1. コードスニペットとテンプレート変数を挿入するには、 ENTRY POINTS を選択します。
  2. 選択したエントリポイントに CODE SNIPPETS を追加するには、 を選択します。
  3. 選択したエントリポイントに TEMPLATE VARIABLES を追加するには、{ } を選択します。
  4. Actions を追加し、partials のフィールドとコンテンツを使ってカスタムロジックを適用するには、 ACTIONS を選択します。
  5. 画面 を更新するには、Save and Publish を選択します。
[partials]

Partials をプログラムで管理する

Auth0 Management API (GET /prompts/{prompts_name}/partials) を使用して Partials を管理できます。partial を追加、更新、または削除する際は、各 prompt で screen を指定する必要があります。Partials は最大 10,000 文字までです。 Partials は、ターミナルで auth0 ul customize を実行して、Auth0 CLI の Customize Interface から管理することもできます。
Partials のコマンドラインインターフェースを示す画像。

Form 入力のスタイル設定とバリデーション

Signup プロンプトと Login プロンプトのカスタマイズでは、あらかじめ用意されたスタイルに加え、特定の HTML フォーム要素に対するクライアントサイドのバリデーションも利用できます。サポート対象の要素は次のとおりです。
  • <input type="text">
  • <input type="number">
  • <input type="checkbox">
  • <input type="password">
  • <input type="email">
  • <input type="tel">
  • <input type="url">
  • <select>
  • <textarea>
あらかじめ用意された入力スタイルを使用するには、対象のフォーム要素を ulp-field クラスを持つ <div> で囲みます。同様に、あらかじめ用意されたエラースタイルを使用するには、同じ <div>ulp-error クラスを追加します。ulp-error-info 要素が存在する場合は、スタイル付きのエラーメッセージも表示されます。 partials エディターを使用すると、あらかじめ用意されたコードスニペットを確認できます。

クライアントサイドのバリデーション

この機能のクライアントサイドのバリデーションフレームワークでは、HTML 属性を使って 1 つ以上のカスタムバリデーション関数を実行し、ユーザー入力をバリデーションできます。バリデーション関数は Partial に直接含めることも、ページテンプレートの <head> に含めることもできます。 フォーム要素にクライアントサイドのバリデーションを追加するには、次のようにします。
  • <div class="ulp-error-info"> 要素の data-ulp-validation-function 属性を使って、バリデーション関数を参照します。
  • <div class="ulp-error-info"> 要素の data-ulp-validation-event-listeners 属性を使って、どの DOM イベントでバリデーション関数を実行するかを指定します。なお、バリデーションは送信時にも自動的に実行されます。
  • WCAG に準拠するには、入力欄を対応するエラーメッセージにプログラムで関連付ける必要があります。たとえば、aria-describedby="error-id"aria-invalid="true" を使用し、スクリーンリーダーがバリデーションエラーを読み上げられるようにします。
サインアップページでサードパーティの JavaScript を使用する場合は注意してください。サインアップページでは機密性の高いセキュリティ関連情報が扱われることが多く、クロスサイトスクリプティングの影響を受けやすくなります。可能であれば、Auth0 は送信前にユーザーが提供したデータをバリデーションすることを推奨しています。

コンテンツをローカライズする

Custom Text API を使用して新しいカスタムテキスト変数を定義すると、コンテンツの一部をローカライズできます。画面と言語の組み合わせごとに、最大 30 個のカスタムテキスト変数を定義できます。

カスタムテキスト変数を作成または更新する

カスタムテキスト変数は、Custom Text API で管理します。カスタムテキスト変数を追加、更新、削除する場合、呼び出しで screen を指定する必要があります。カスタムテキスト変数は、var-<name> という命名規則に従います。Markdown リンクはサポートされており、ユーザーに表示される前に HTML の <a> 要素に変換されます。 以下は、英語とスペイン語の利用規約チェックボックスラベルのテキストに変数を追加する呼び出し例です。詳しくは、 を参照してください。

Partial でカスタムテキスト変数を使用する

カスタムテキスト変数は、Partial 内で prompts.screen.text オブジェクトを使用して参照します。前のセクションの var-tos の例では、参照先は prompt.screen.text.varTos です。以下に、以前作成した変数を Signup ID Prompt の Partial で使用する例を示します。なお、Management API の var-tos 変数は、Partial 内では varTos として参照されます。

取得したデータをバリデーションして保存する

カスタムフォーム要素で取得したデータは Actions で利用できます。Auth0 では、収集したデータを保存または送信する前にバリデーションすることを推奨しています。
カスタムフォーム要素を使用する場合、データを Actions で利用できるようにするには、すべての入力名に ulp- プレフィックスを付ける必要があります。
各 Action は、取得したデータを event.request.body 上のオブジェクトとして受け取ります。お客様は api.validation.error 関数を使用してバリデーションエラーを返すことができます。 データベース接続を使用する場合:
  • Signup プロンプト のデータは pre-user-registration トリガーで利用できます。トリガーでバリデーションエラーが返されると、ユーザーは登録できません。
  • Login プロンプト のデータは post-login トリガーで利用できます。バリデーションエラーは、お客様のアプリケーションのエラーページに転送されます。
ソーシャル 接続または エンタープライズ 接続を使用する場合:
  • Login プロンプト のデータは post-login トリガーで利用できます。バリデーションエラーは、お客様のアプリケーションのエラーページに転送されます。
カスタムデータベース接続を使用する場合:
  • Signup プロンプト のデータは、次のカスタムデータベースのアクションスクリプトとともに pre-user-registration トリガーで利用できます: Create User および Login
  • Login プロンプト のデータは、次のカスタムデータベースのアクションスクリプトとともに post-login トリガーで利用できます: Login および Change Password
カスタムデータベースのアクションスクリプトを使用するには、カスタムデータベース接続で Context objects in database scripts を有効にしてください。詳細については、Enable context object を参照してください。
パスワードレス接続を使用する場合:
  • Signup プロンプト と Login プロンプト の両方のデータは post-login トリガーで利用できます。バリデーションエラーは、お客様のアプリケーションのエラーページに転送されます。
パスキー プロンプトを使用する場合:
  • passkey-enrollment プロンプトのデータは pre-user-registration トリガーで利用できます。トリガーでバリデーションエラーが返されると、ユーザーは登録できません。
  • passkey-enrollmentpasskey-enrollment-local の各プロンプトでは、Post Login トリガーでデータが取得されることはありません。
  • passkey-enrollment-local プロンプトのデータは利用できません。これは、このプロンプトが常に post-login トリガーの実行後に表示されるためです。
フォームで収集したデータは、保存またはレンダリングする前にサニタイズしてください。
  • 保存するデータは必ず Liquid の {{escape}} ヘルパー関数 を通してください
  • データを Email Template でレンダリングする場合は、Liquid 構文を削除してください
  • データをウェブページでレンダリングする場合は、HTML エンティティをエスケープしてください
  • データをデータベースに保存する場合は、パラメータ化されたクエリを使用してください
  • データを query string に渡す場合は、たとえば {{encodeURI}} または {{encodeURIParam}} でエンコードしてください
リスクの軽減やデータを安全に保存するためのベストプラクティスについて詳しくは、このチートシート を参照してください。

ユーザーのメタデータに保存

Action では、取得したデータを外部 API に送信してバリデーションや保存を行うことも、api.user.setUserMetadata を使用してユーザーの user_metadata に保存することもできます。

詳しくはこちら