claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialsecurity

🔐auth0-react

プラグイン
auth0
ライセンス
Apache-2.0

説明

次のような場合に使用: React SPAにAuth0のログイン・ログアウト機能、保護されたルート、またはユーザーセッションを追加する場合。 `@auth0/auth0-react` を統合します。 ユーザーが「ReactアプリにログインをつけたHい」や「Reactのルートを保護したい」のようにSDK名を明示しない場合でも、このスキルを使用してください。

原文を表示

Use when adding Auth0 login, logout, protected routes, or user sessions to a React SPA. Integrates @auth0/auth0-react — use even if the user says "add login to my React app" or "protect my React routes" without naming the SDK.

ユースケース

  • React SPAにAuth0のログイン機能を追加する
  • React SPAにログアウト機能を追加する
  • Reactのルートを保護する
  • ユーザーセッションを管理する

本文(日本語訳)

Auth0 React インテグレーション

@auth0/auth0-react を使用して、React シングルページアプリケーションに認証機能を追加します。


前提条件

  • React 16.11 以上のアプリケーション(Vite または Create React App)— React 16、17、18、19 に対応
  • Auth0 アカウントおよびアプリケーションの設定が完了していること
  • Auth0 をまだセットアップしていない場合は、先に auth0-quickstart スキルを使用してください

使用しない場合

  • Next.js アプリケーション — App Router・Pages Router のどちらにも auth0-nextjs スキルを使用してください
  • React Native モバイルアプリ — iOS/Android には auth0-react-native スキルを使用してください
  • サーバーサイドレンダリングの React — フレームワーク固有の SDK(Next.js、Remix 等)を使用してください
  • 埋め込みログイン — この SDK は Auth0 Universal Login(リダイレクト方式)を使用します
  • バックエンド API の認証 — 代わりに express-openid-connect または JWT バリデーションを使用してください

クイックスタート手順

1. SDK のインストール

npm install @auth0/auth0-react

2. 環境設定

Auth0 CLI を使った自動セットアップの場合は、完全なスクリプトについて セットアップガイド を参照してください。

手動セットアップの場合:

.env ファイルを作成します:

Vite の場合:

VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id

Create React App の場合:

REACT_APP_AUTH0_DOMAIN=your-tenant.auth0.com
REACT_APP_AUTH0_CLIENT_ID=your-client-id

3. Auth0Provider でアプリをラップする

src/main.tsx(Vite)または src/index.tsx(CRA)を更新します:

import React from 'react';
import ReactDOM from 'react-dom/client';
import { Auth0Provider } from '@auth0/auth0-react';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <Auth0Provider
      domain={import.meta.env.VITE_AUTH0_DOMAIN} // または process.env.REACT_APP_AUTH0_DOMAIN
      clientId={import.meta.env.VITE_AUTH0_CLIENT_ID}
      authorizationParams={{
        redirect_uri: window.location.origin
      }}
    >
      <App />
    </Auth0Provider>
  </React.StrictMode>
);

4. 認証 UI の追加

import { useAuth0 } from '@auth0/auth0-react';

export function LoginButton() {
  const { loginWithRedirect, logout, isAuthenticated, user, isLoading } = useAuth0();

  if (isLoading) return <div>Loading...</div>;

  if (isAuthenticated) {
    return (
      <div>
        <span>Welcome, {user?.name}</span>
        <button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}>
          Logout
        </button>
      </div>
    );
  }

  return <button onClick={() => loginWithRedirect()}>Login</button>;
}

5. 認証のテスト

開発サーバーを起動し、ログインフローをテストします:

npm run dev  # Vite
# または
npm start    # CRA

詳細ドキュメント


よくある間違い

間違い 対処法
Auth0 Dashboard へのリダイレクト URI の追加を忘れた Auth0 Dashboard の Allowed Callback URLs に アプリケーションの URL(例:http://localhost:3000https://app.example.com)を追加してください
環境変数のプレフィックスが間違っている Vite は VITE_ プレフィックス、Create React App は REACT_APP_ プレフィックスを使用します
ローディング状態を処理していない 認証に依存する UI をレンダリングする前に、必ず isLoading を確認してください
トークンを localStorage に保存している トークンを手動で保存しないでください — SDK が自動的にセキュアなストレージを管理します
Auth0Provider のラップが漏れている アプリ全体を <Auth0Provider> でラップする必要があります
Provider がルートレベルに配置されていない Auth0Provider は、auth hooks を使用するすべてのコンポーネントをラップしなければなりません
環境変数のインポートパスが間違っている Vite は import.meta.env.VITE_*、CRA は process.env.REACT_APP_* を使用します
アプリ内 MFA に acr_values リダイレクトを使用している アプリ内の enrollment/challenge/verify フローには useAuth0().mfa API を使用してください
MfaRequiredError をキャッチしていない getAccessTokenSilently を try/catch でラップし、instanceof MfaRequiredError を確認してください
MFA エンドポイントに直接 HTTP リクエストを送っている useAuth0()mfa プロパティを使用してください — トークン管理を自動的に処理します
ステップアップ MFA でリフレッシュトークンを忘れた interactiveErrorHandler="popup" を使用する場合は、Auth0Provider に useRefreshTokens={true} を設定してください

関連スキル

  • auth0-quickstart — Auth0 の基本セットアップ
  • auth0-migration — 別の認証プロバイダーからの移行
  • auth0-mfa — 多要素認証(MFA)の追加
  • auth0-cli — ターミナルから Auth0 リソースを管理

クイックリファレンス

主要な Hooks:

  • useAuth0() — メインの認証 hook
  • isAuthenticated — ユーザーがログイン済みかどうかを確認
  • user — ユーザープロフィール情報
  • loginWithRedirect() — ログインを開始
  • logout() — ユーザーをログアウト
  • getAccessTokenSilently() — API 呼び出し用のアクセストークンを取得
  • mfa — enrollment・challenge・verification 用の MFA API クライアント
    • mfa.getAuthenticators(mfaToken) — 登録済み authenticator の一覧を取得
    • mfa.getEnrollmentFactors(mfaToken) — 利用可能な enrollment ファクターを取得
    • mfa.enroll(params) — 新しい authenticator を登録(OTP、SMS、Email、Voice、Push)
    • mfa.challenge(params) — MFA チャレンジを開始
    • mfa.verify(params) — MFA チャレンジを検証し、認証を完了

MFA エラータイプ(@auth0/auth0-react からインポート):

  • MfaRequiredError — MFA が必要な場合に getAccessTokenSilently がスロー(mfa_tokenmfa_requirements を持つ)
  • MfaEnrollmentErrorMfaChallengeErrorMfaVerifyError — それぞれ対応する mfa.* メソッドがスロー

主なユースケース:


参考リンク

原文(English)を表示

Auth0 React Integration

Add authentication to React single-page applications using @auth0/auth0-react.


Prerequisites

  • React 16.11+ application (Vite or Create React App) - supports React 16, 17, 18, and 19
  • Auth0 account and application configured
  • If you don't have Auth0 set up yet, use the auth0-quickstart skill first

When NOT to Use

  • Next.js applications - Use auth0-nextjs skill for both App Router and Pages Router
  • React Native mobile apps - Use auth0-react-native skill for iOS/Android
  • Server-side rendered React - Use framework-specific SDK (Next.js, Remix, etc.)
  • Embedded login - This SDK uses Auth0 Universal Login (redirect-based)
  • Backend API authentication - Use express-openid-connect or JWT validation instead

Quick Start Workflow

1. Install SDK

npm install @auth0/auth0-react

2. Configure Environment

For automated setup with Auth0 CLI, see Setup Guide for complete scripts.

For manual setup:

Create .env file:

Vite:

VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id

Create React App:

REACT_APP_AUTH0_DOMAIN=your-tenant.auth0.com
REACT_APP_AUTH0_CLIENT_ID=your-client-id

3. Wrap App with Auth0Provider

Update src/main.tsx (Vite) or src/index.tsx (CRA):

import React from 'react';
import ReactDOM from 'react-dom/client';
import { Auth0Provider } from '@auth0/auth0-react';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <Auth0Provider
      domain={import.meta.env.VITE_AUTH0_DOMAIN} // or process.env.REACT_APP_AUTH0_DOMAIN
      clientId={import.meta.env.VITE_AUTH0_CLIENT_ID}
      authorizationParams={{
        redirect_uri: window.location.origin
      }}
    >
      <App />
    </Auth0Provider>
  </React.StrictMode>
);

4. Add Authentication UI

import { useAuth0 } from '@auth0/auth0-react';

export function LoginButton() {
  const { loginWithRedirect, logout, isAuthenticated, user, isLoading } = useAuth0();

  if (isLoading) return <div>Loading...</div>;

  if (isAuthenticated) {
    return (
      <div>
        <span>Welcome, {user?.name}</span>
        <button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}>
          Logout
        </button>
      </div>
    );
  }

  return <button onClick={() => loginWithRedirect()}>Login</button>;
}

5. Test Authentication

Start your dev server and test the login flow:

npm run dev  # Vite
# or
npm start    # CRA

Detailed Documentation

  • Setup Guide - Automated setup scripts (Bash/PowerShell), CLI commands, manual configuration
  • Integration Guide - Protected routes, API calls, error handling, advanced patterns
  • API Reference - Complete SDK API, configuration options, hooks reference, testing strategies

Common Mistakes

Mistake Fix
Forgot to add redirect URI in Auth0 Dashboard Add your application URL (e.g., http://localhost:3000, https://app.example.com) to Allowed Callback URLs in Auth0 Dashboard
Using wrong env var prefix Vite uses VITE_ prefix, Create React App uses REACT_APP_
Not handling loading state Always check isLoading before rendering auth-dependent UI
Storing tokens in localStorage Never manually store tokens - SDK handles secure storage automatically
Missing Auth0Provider wrapper Entire app must be wrapped in <Auth0Provider>
Provider not at root level Auth0Provider must wrap all components that use auth hooks
Wrong import path for env vars Vite uses import.meta.env.VITE_*, CRA uses process.env.REACT_APP_*
Using acr_values redirect for in-app MFA Use useAuth0().mfa API for in-app enrollment/challenge/verify flows
Not catching MfaRequiredError Wrap getAccessTokenSilently in try/catch and check instanceof MfaRequiredError
Making direct HTTP calls to MFA endpoints Use the mfa property from useAuth0() — it handles token management automatically
Forgetting refresh tokens for step-up MFA Set useRefreshTokens={true} on Auth0Provider when using interactiveErrorHandler="popup"

Related Skills

  • auth0-quickstart - Basic Auth0 setup
  • auth0-migration - Migrate from another auth provider
  • auth0-mfa - Add Multi-Factor Authentication
  • auth0-cli - Manage Auth0 resources from the terminal

Quick Reference

Core Hooks:

  • useAuth0() - Main authentication hook
  • isAuthenticated - Check if user is logged in
  • user - User profile information
  • loginWithRedirect() - Initiate login
  • logout() - Log out user
  • getAccessTokenSilently() - Get access token for API calls
  • mfa - MFA API client for enrollment, challenge, and verification
    • mfa.getAuthenticators(mfaToken) - List enrolled authenticators
    • mfa.getEnrollmentFactors(mfaToken) - Get available enrollment factors
    • mfa.enroll(params) - Enroll new authenticator (OTP, SMS, Email, Voice, Push)
    • mfa.challenge(params) - Initiate MFA challenge
    • mfa.verify(params) - Verify MFA challenge and complete authentication

MFA Error Types (import from @auth0/auth0-react):

  • MfaRequiredError - Thrown by getAccessTokenSilently when MFA is needed (has mfa_token and mfa_requirements)
  • MfaEnrollmentError, MfaChallengeError, MfaVerifyError - Thrown by respective mfa.* methods

Common Use Cases:


References

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。