Documentation Index Fetch the complete documentation index at: https://auth0-dr-923.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
始める前に 以下が必要です。
ユニバーサルログインを構成済みのAuth0の開発テナント
カスタムドメインを構成済みのアプリケーション
ローカルホスト上で実行されている開発アプリまたはサンプルアプリ(Reactのサンプルアプリ など)
パスワードを使用するデータベース接続
このガイドの終わりには、カスタマイズしたサインアップ画面のあるIdentity Firstフローが完成します。詳細については、「使用の開始ガイド 」をお読みの上で、「SDKリファレンスガイド 」を参照してください。
セットアップする
Auth0 Dashboard でユニバーサルログイン 、Identifier First認証 、パスワードを使用するデータベース接続 をセットアップします。
シングルページアプリケーションを実行して、カスタムログイン画面を構築します。高度なカスタマイズインターフェイスのコンテキストを理解するには、Auth0が提供するボイラープレートアプリをクローンしてください:git clone https://github.com/auth0/auth0-acul-react-boilerplate
ACUL SDK をインストールします。Reactのボイラープレートをクローンしたら、ディレクトリをauth0-acul-react-boilerplateに変更して、SDKをインストールします。
//Clone the ACUL sample application into the root folder of your project
git clone https : //github.com/auth0-samples/auth0-acul-samples.git
//Change directory to install the ACUL sample application
cd auth0 - acul - samples && npm i
1. signup画面を構築する
以下は完全な画面の例です。
accordion.expand_all/accordion.collapse_all
import { ChangeEvent } from "react" ;
import { Signup as ScreenProvider } from "@auth0/auth0-acul-js" ;
// UI Components
import { Label } from "@/components/ui/label" ;
import { Input } from "@/components/ui/input" ;
import { Button } from "@/components/ui/button" ;
import { Text } from "@/components/ui/text" ;
import { Link } from "@/components/ui/link" ;
import {
CardHeader ,
CardTitle ,
CardDescription ,
CardContent ,
} from "@/components/ui/card" ;
export default function Signup () {
// Initialize the SDK for this screen
const screenProvider = new ScreenProvider ();
// Handle the submit action
const formSubmitHandler = ( event : ChangeEvent < HTMLFormElement >) => {
event . preventDefault ();
// grab the value from the form
const identifierInput = event . target . querySelector (
"input#identifier"
) as HTMLInputElement ;
const passwordInput = event . target . querySelector (
"input#password"
) as HTMLInputElement ;
screenProvider . signup ({
email: identifierInput ?. value ,
password: passwordInput ?. value ,
});
};
// Render the form
return (
< form noValidate onSubmit = { formSubmitHandler } >
< CardHeader >
< CardTitle className = "mb-2 text-3xl font-medium text-center" >
{ screenProvider . screen . texts ?. title ?? "Welcome" }
</ CardTitle >
< CardDescription className = "mb-8 text-center" >
{ screenProvider . screen . texts ?. description ?? "Create your account" }
</ CardDescription >
</ CardHeader >
< CardContent >
< div className = "mb-2 space-y-2" >
< Label htmlFor = "identifier" >
{ screenProvider . screen . texts ?. emailPlaceholder ??
"Enter your email" }
</ Label >
< Input
type = "text"
id = "identifier"
name = "identifier"
defaultValue = {
screenProvider . screen . data ?. email ??
screenProvider . untrustedData . submittedFormData ?. email
}
/>
</ div >
< div className = "mb-2 space-y-2" >
< Label htmlFor = "password" >
{ screenProvider . screen . texts ?. passwordPlaceholder ?? "Password" }
</ Label >
< Input type = "password" id = "password" name = "password" />
</ div >
< Button type = "submit" className = "w-full" >
{ screenProvider . screen . texts ?. buttonText ?? "Continue" }
</ Button >
< Text >
{ screenProvider . screen . texts ?. footerText ??
"Already have an account?" }
< Link className = "ml-1" href = { screenProvider . screen . links ?. login ?? "#" } >
{ screenProvider . screen . texts ?. footerLinkText ??
"Log into your account" }
</ Link >
</ Text >
</ CardContent >
</ form >
);
}
SDKをインポートして初期化する
auth0-acul-react-boilerplate/srcフォルダー内に「screens」という名前のフォルダーと「Login.tsx」という名前のファイルを作成します。SDKをインポートして、Reactコンポーネント内で画面にSDKを初期化します。
import { Signup as ScreenProvider } from "@auth0/auth0-acul-js" ;
export default function Signup () {
// Initialize the SDK for this screen
const screenProvider = new ScreenProvider ();
...
}
SDKで画面のプロパティやメソッドにアクセスする
SDKを使用すると、画面のプロパティやメソッドにアクセスできます。Auth0 ACUL JS SDK にはデータにアクセスするためのプロパティとメソッドがあります。
コンテキストデータの詳細については、「ユニバーサルログインのコンテキストデータ」をお読みください。
< form noValidate onSubmit = { formSubmitHandler } >
...
< CardContent >
< div className = "mb-2 space-y-2" >
< Label htmlFor = "identifier" >
{ screenProvider . screen . texts ?. emailPlaceholder ??
"Enter your email" }
</ Label >
< Input
type = "text"
id = "identifier"
name = "identifier"
defaultValue = {
screenProvider . screen . data ?. email ??
screenProvider . untrustedData . submittedFormData ?. email
}
/>
</ div >
< div className = "mb-2 space-y-2" >
< Label htmlFor = "password" >
{ screenProvider . screen . texts ?. passwordPlaceholder ?? "Password" }
</ Label >
< Input type = "password" id = "password" name = "password" />
</ div >
< Button type = "submit" className = "w-full" >
{ screenProvider . screen . texts ?. buttonText ?? "Continue" }
</ Button >
...
</ CardContent >
</ form >
);
}
送信アクションを呼び出す
SDKを使用して、画面で捉えたデータをサーバーに送信します。サーバーはこのデータを処理し、フローにある次の手順にユーザーを進めます。エラーがあれば画面を再度読み込んで、ユーザーにエラーのある箇所を示します。エラーはSDKからアクセスされます。
const formSubmitHandler = ( event : ChangeEvent < HTMLFormElement >) => {
event . preventDefault ();
// grab the value from the form
const identifierInput = event . target . querySelector (
"input#identifier"
) as HTMLInputElement ;
const passwordInput = event . target . querySelector (
"input#password"
) as HTMLInputElement ;
screenProvider . signup ({
email: identifierInput ?. value ,
password: passwordInput ?. value ,
});
};
2. ACULにローカルアセットの使用を構成する
Auth0 CLI、Terraform、またはManagement API を使用してACULを有効化します。構成可能な項目については、「ACUL画面を構成する 」をお読みください。
Auth0 CLI(推奨)
Auth0 Terraform
Auth0 Management API
プロジェクトのルートディレクトリにsettingsフォルダーを作成して、{SCREENNAME}.jsonファイルを格納します。 //settings.json
{
"rendering_mode" : "advanced" ,
"context_configuration" : [
"screen.texts"
],
"head_tags" : [
{
"attributes" : {
"async" : true ,
"defer" : true ,
"integrity" : [
"ASSET_SHA"
],
"src" : "http://127.0.0.1:8080/index.js"
},
"tag" : "script"
},
{
"attributes" : {
"href" : "http://127.0.0.1:8080/index.css" ,
"rel" : "stylesheet"
},
"tag" : "link"
}
]
}
Auth0 CLIでACULを有効にするには以下を行います。 auth0 ul customize -- rendering - mode advanced -- prompt { SCREENNAME } -- screen { SCREENNAME } -- settings - file . /settings/ { SCREENNAME }. json
プロジェクトのルートディレクトリ内にlogin-id.jsonファイルを作成します: //login-id.json
{
"rendering_mode" : "advanced" ,
"context_configuration" : [
"screen.texts"
],
"head_tags" : [
{
"attributes" : {
"async" : true ,
"defer" : true ,
"integrity" : [
"ASSET_SHA"
],
"src" : "http://127.0.0.1:8080/index.js"
},
"tag" : "script"
},
{
"attributes" : {
"href" : "http://127.0.0.1:8080/index.css" ,
"rel" : "stylesheet"
},
"tag" : "link"
}
]
}
Auth0 TerraformでACULを有効にする prompts :
identifier_first : true
universal_login_experience : classic
mfa - login - options :
pageTitle : 'Log in to ${clientName}'
authenticatorNamesSMS : 'SMS'
screenRenderers :
- login - id :
login - id : . / prompts / screenRenderSettings / login - id . json
Auth0 Management APIを使用してACULを有効化できます curl -- location -- request PATCH 'https://{YOUR-CUSTOM-DOMAIN}/api/v2/prompts/{YOUR-PROMPT}/screen/{YOUR-SCREEN}/rendering' \
-- header 'Content-Type: application/json' \
-- header 'Authorization: Bearer <API TOKEN>' \
-- data ' {
"rendering_mode" : "advanced" ,
"context_configuration" : [
"branding.settings" ,
"organization.branding" ,
"screen.texts" ,
"tenant.name" ,
"tenant.friendly_name" ,
"tenant.enabled_locales" ,
"untrusted_data.submitted_form_data" ,
"untrusted_data.authorization_params.ui_locales" ,
"untrusted_data.authorization_params.login_hint" ,
"untrusted_data.authorization_params.screen_hint"
],
"head_tags" : [
{
"tag" : "script" ,
"attributes" : {
"src" : "http://127.0.0.1:8080/index.js" ,
"defer" : true
}
},
{
"tag" : "link" ,
"attributes" : {
"rel" : "stylesheet" ,
"href" : "http://127.0.0.1:8080/index.css"
}
},
{
"tag" : "meta" ,
"attributes" : {
"name" : "viewport" ,
"content" : "width=device-width, initial-scale=1"
}
}
]
} '
ローカルサーバーで構成を構築する
ACULではアセットを公開URLでホストする必要があります。アセットをデプロイする前に、ローカルサーバーを実行してアセットをテストしてください。
// Creates the local assets
npm run build
cd dist
// Serves the assets from localhost
npx serve - p 8080 -- cors
3. ローカルサーバーで構成をテストする
ユニバーサルログインの高度なカスタマイズは、ViteやWebpackなどを含むすべてのModern Javascriptバンドルで動作します。詳細については、「高度なカスタマイズを運用にデプロイする」をお読みください。
テナントにACULをデプロイする詳細については、「ACUL画面を構成する 」をお読みください。
関連コンテンツ