Auth0ComponentProvider は、Auth0 Universal Components のオーケストレーション層です。Auth0 SDK はセッションとトークンを管理し、Auth0ComponentProvider はそのアイデンティティの状態を、機能的でブランドに沿った UI コンテキストへと変換します。Auth0ComponentProvider は、MFA 登録などのコンポーネントで必要となる権限、キャッシュされたデータ、スタイリングを確実に利用できるようにします。
利点
Auth0ComponentProvider は、すべての Auth0 Universal Components に必要なルートラッパーです。このラッパーを使用する利点は次のとおりです。
- アイデンティティの整合性: Auth0 SDK と My Account API を橋渡しし、ユーザースコープのトークンでリクエストが署名されるようにします。
- パフォーマンスの最適化: アイデンティティワークフロー向けに最適化された共有 TanStack Query キャッシュを実装し、不要な API 呼び出しやレイアウトシフトを防ぎます。
- デザインシステムの一貫性: Tailwind CSS の変数と Shadcn 互換のテーマをコンポーネントツリー全体に適用します。
- グローバルフィードバック: セキュリティアラートやワークフローのステータスを知らせる統合トースト通知システムを管理します。
連携アーキテクチャ
Auth0Provider) 内に Auth0ComponentProvider をネストします。この構成により、Auth0 API の呼び出しに必要な認証 state と token 取得メソッドにアクセスできます。
Auth0ComponentProvider を設定する
- React
- Next.js
- shadcn
セキュリティに関する推奨事項: 組織の設定を管理する本番環境のアプリケーションには、Auth0 では Next.js のセットアップ (Regular Web App) を推奨しています。Next.js のプロキシモードではトークンがサーバー側に保存されるため、Single Page Application でブラウザーに保存されるトークンと比べて、攻撃対象領域を縮小できます。React SPA モードを使用する場合は、トレードオフを理解するために Token Storage のガイダンスを確認してください。
App.tsx
プロパティ
| プロパティ | 型 | 必須 | 説明 |
|---|---|---|---|
domain | string | はい | Auth0 テナントのドメイン (“YOUR_AUTH0_TENANT.auth0.com”)。 |
previewMode | boolean | いいえ | true の場合、API クライアントの初期化をスキップします。ドキュメントのプレビューやデモで使用します。 |
i18n | I18nOptions | いいえ | currentLanguage と fallbackLanguage を含む国際化設定。 |
themeSettings | ThemeSettings | いいえ | モード (ライト/ダーク) 、テーマバリアント (default/minimal/rounded) 、CSS 変数を含むテーマ設定。 |
toastSettings | ToastSettings | いいえ | プロバイダーの選択 (sonner/custom) 、表示位置、表示時間、カスタムトーストメソッドを含むトースト通知設定。 |
cacheConfig | QueryCacheConfig | いいえ | TanStack Query のキャッシュを制御します (デフォルトでは stale が 2 分、GC が 5 分) 。常に最新のデータを取得するには、enabled: false を設定します。 |
loader | React.ReactNode | いいえ | 認証の初期化中に表示するカスタムローディングコンポーネント。 |
ユーザー体験
i18n以下のプロパティを使用して、Universal Components をアプリケーションのデザインシステムやロケールに合わせて調整します。
| プロパティ | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
currentLanguage | string | はい | - | 現在の言語コード (例:“en”、“es”、“fr”) |
fallbackLanguage | string | いいえ | ”en” | 翻訳が存在しない場合に使用するフォールバック言語コード |
themeSettings
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
mode | ”light” | “dark" | "light” | テーマのカラーモード |
theme | ”default” | “minimal” | “rounded" | "default” | スタイルが異なるテーマバリアント |
variables | StylingVariables | 共通、ライト、ダークテーマ用のCSSカスタムプロパティ |
利用可能なCSS変数
利用可能なCSS変数
共通 (すべてのThemeに適用) :タイポグラフィ:
--font-size-page-header--font-size-page-description--font-size-heading--font-size-title--font-size-subtitle--font-size-body--font-size-paragraph--font-size-label
--radius-xs~--radius-9xl
--background,--foreground--card,--card-foreground--primary,--primary-foreground--secondary,--secondary-foreground--accent,--accent-foreground--muted,--muted-foreground--destructive,--destructive-foreground--popover,--popover-foreground--input,--border,--ring--color-page--color-info,--color-info-foreground--color-success,--color-success-foreground--color-warning,--color-warning-foreground--color-destructive-border--color-popover-border--color-input-foreground--color-input-muted
--shadow-bevel-*(xs、sm、md、lg、xl、2xl)--shadow-button-*(通常時、ホバー時、フォーカス時)--shadow-button-destructive-*--shadow-button-outlined-*--shadow-input-*(通常時、ホバー時、フォーカス時)--shadow-input-destructive-*--shadow-checkbox-*(通常時、ホバー時)--shadow-switch-*(通常時、ホバー時、フォーカス時、thumb、thumb-dark)
詳細なスタイリングの例やカスタマイズのパターンについては、Universal
Components を使用したスタイルとテーマのカスタマイズを参照してください。
toastSettingsToast 設定では、Sonner (デフォルト) またはカスタムの 2 種類のプロバイダーをサポートしています。型安全性を高めるため、各プロバイダーには独自の設定構造があります。
- Sonner Provider(デフォルト)
- Custom Provider
Sonner Provider Example
状態とパフォーマンス
すべてのAuth0コンポーネントにおけるTanStack Queryのキャッシュ動作を細かく調整します。デフォルトでは、データを2分間最新の状態に保ち、5分後にガベージコレクションし、ウィンドウがフォーカスされた際の再フェッチは行いません。| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | true | キャッシュ機能全体の有効/無効を切り替えます。falseに設定すると、古いデータは
使用されなくなり、キャッシュ済みのエントリは速やかに削除されます。 |
staleTime | number | 120000 | データが古いものと見なされるまでのミリ秒数です。デフォルトは2分です。ダッシュボードでは長く、 重要なワークフローでは短く設定します。 |
gcTime | number | 300000 | 非アクティブなクエリがガベージコレクションされるまでのミリ秒数です。デフォルトは5分です。 |
refetchOnWindowFocus | boolean | “always” | false | ブラウザが再びフォーカスを得たときにクエリを再取得するかどうかを指定します。常に最新の状態を保つには
“always”を使用します。 |
キャッシュを無効にする:
{ enabled: false } を渡します。これにより、staleTime は自動的に 0 に設定され、ガベージコレクションの保持期間は 5 秒に短縮されるため、レンダリングのたびに最新のデータが取得されます。プロのヒント: ほぼリアルタイムの更新が必要な管理パネルと連携する場合は、キャッシュを有効のままにして staleTime を短くします。- TTL を調整
- キャッシュを無効にする