auth0-react
작성자: auth0
React SPA를 위한 인증으로, Auth0 Universal Login과 리디렉트 기반 플로우를 사용합니다. React 16~19와 Vite 또는 Create React App을 지원하며, 앱을 Auth0Provider로 감싸고 useAuth0(), loginWithRedirect(), logout() 같은 훅을 제공합니다. 사용자 세션, 액세스 토큰, 프로필 데이터를 자동으로 처리하며, SDK가 수동 localStorage 처리 없이 안전한 토큰 저장을 관리합니다. 통합 가이드에 문서화된 보호된 라우트, API 토큰 주입, 오류 처리 패턴을 포함합니다...
npx skills add https://github.com/auth0/agent-skills --skill auth0-reactAuth0 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-quickstartskill first
When NOT to Use
- Next.js applications - Use
auth0-nextjsskill for both App Router and Pages Router - React Native mobile apps - Use
auth0-react-nativeskill 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 setupauth0-migration- Migrate from another auth providerauth0-mfa- Add Multi-Factor Authenticationauth0-cli- Manage Auth0 resources from the terminal
Quick Reference
Core Hooks:
useAuth0()- Main authentication hookisAuthenticated- Check if user is logged inuser- User profile informationloginWithRedirect()- Initiate loginlogout()- Log out usergetAccessTokenSilently()- Get access token for API callsmfa- MFA API client for enrollment, challenge, and verificationmfa.getAuthenticators(mfaToken)- List enrolled authenticatorsmfa.getEnrollmentFactors(mfaToken)- Get available enrollment factorsmfa.enroll(params)- Enroll new authenticator (OTP, SMS, Email, Voice, Push)mfa.challenge(params)- Initiate MFA challengemfa.verify(params)- Verify MFA challenge and complete authentication
MFA Error Types (import from @auth0/auth0-react):
MfaRequiredError- Thrown bygetAccessTokenSilentlywhen MFA is needed (hasmfa_tokenandmfa_requirements)MfaEnrollmentError,MfaChallengeError,MfaVerifyError- Thrown by respectivemfa.*methods
Common Use Cases:
- Login/Logout buttons → See Step 4 above
- Protected routes → Integration Guide
- API calls with tokens → Integration Guide
- Error handling → Integration Guide
- MFA handling → Integration Guide
References
auth0의 다른 스킬
acul-screen-generator
auth0
완전한 브랜드 적용 Auth0 Advanced Custom Universal Login (ACUL) 화면 구현을 React 또는 Vanilla JS SDK를 사용하여 생성합니다. 개발자가 요청할 때 사용하세요.
official
auth0-android
auth0
Android 애플리케이션(Kotlin/Java)에 Web Auth, 생체 인증 보호 자격 증명 및 MFA를 사용하여 인증을 추가할 때 사용합니다 - 통합…
official
auth0-angular
auth0
Angular 애플리케이션에 라우트 가드 및 HTTP 인터셉터를 사용하여 인증을 추가할 때 사용하며, SPA를 위해 @auth0/auth0-angular SDK를 통합합니다.
official
auth0-aspnetcore-api
auth0
ASP.NET Core Web API 엔드포인트를 JWT Bearer 토큰 검증, 범위/권한 확인 또는 무상태 인증으로 보호할 때 사용합니다 - 통합…
official
auth0-cli
auth0
Auth0 CLI 명령어 참조 — 앱, API, 사용자, 역할, 조직, 액션, 로그, 사용자 정의 도메인, 유니버설 로그인, 테라폼, 원시 API 모드, --json…
official
auth0-expo
auth0
Expo(React Native) 모바일 앱에 인증(로그인, 로그아웃, 사용자 세션, 보호된 라우트, 생체 인증, 토큰 관리)을 추가할 때 사용합니다. 통합…
official
auth0-express
auth0
Express.js 웹 애플리케이션에 인증(로그인, 로그아웃, 보호된 라우트)을 추가할 때 사용 - 세션 기반 인증을 위해 express-openid-connect를 통합합니다.
official
auth0-fastapi-api
auth0
FastAPI API 엔드포인트를 JWT Bearer 토큰 검증, 범위/권한 확인 또는 무상태 인증으로 보호할 때 사용 - REST를 위해 auth0-fastapi-api 통합…
official