AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skillsを使って数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに次のように依頼します:AI アシスタントが自動的に Auth0 アプリケーションを作成し、資格情報を取得し、
react-native-auth0 をインストールし、ネイティブの依存関係を設定して、認証フローを構成します。agent skills の完全なドキュメント →はじめに
1
新しいReact Nativeプロジェクトを作成する
このQuickstartでは、新しいReact Nativeプロジェクトを作成します。ターミナルで:次の内容でプロジェクトを設定します。
- 名前:
Auth0ReactNativeSample - パッケージ名:
com.auth0.samples.reactnative
2
Auth0 SDKをインストールする
Auth0 React Native SDKをプロジェクトに追加します。iOS では、ネイティブの依存関係をインストールします。
3
Auth0 のアプリケーションを設定する
React Nativeアプリで使用する Auth0アプリケーションを作成して設定します。許可されたログアウトURL:
- Auth0 Dashboardに移動します
- アプリケーション > アプリケーション > アプリケーションを作成 をクリックします
- ポップアップでアプリの名前 (例:
Auth0 React Native Sample) を入力し、アプリの種類としてNativeを選択して Create をクリックします - アプリケーションの詳細ページで 設定 タブに切り替えます
- Domain と Client ID の値を控えます
{yourDomain} を実際の Auth0ドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。Allowed Callback URLs は、認証後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致するURLがない場合、ログインプロセスは失敗し、ユーザーはアプリにアクセスできず、代わりに Auth0 のエラーページが表示されます。Allowed Logout URLs は、サインアウト時にシームレスなユーザーエクスペリエンスを提供するうえで不可欠です。一致するURLがない場合、ログアウト後にユーザーはアプリケーションへリダイレクトされず、代わりに汎用的な Auth0 のページに遷移します。URLスキームには、コールバックが対象のアプリに確実にルーティングされるよう、bundle identifier の後に
.auth0 を含めます。この Quickstart では、bundle identifier は org.reactjs.native.example.auth0reactnativesample です。4
ネイティブプラットフォームを設定する
iOS と Android の両方で、認証コールバックを処理できるように設定します。Android の設定:
android/app/build.gradle を開き、defaultConfig 内にマニフェスト プレースホルダーを追加します。android/app/build.gradle
{yourDomain} をご利用の Auth0 ドメイン (例: dev-abc123.us.auth0.com) に置き換えてください。iOS の設定:- AppDelegate.mm (Objective-C)
- AppDelegate.swift (Swift)
ios/Auth0ReactNativeSample/AppDelegate.mm を開き、URL を処理するメソッドを追加します。ios/Auth0ReactNativeSample/AppDelegate.mm
ios/Auth0ReactNativeSample/Info.plist を開き、URL スキームを追加します。閉じる </dict> タグの直前に次を追加してください:ios/Auth0ReactNativeSample/Info.plist
URL スキームには、
.auth0 を付加したバンドル識別子を使用します。これにより、ブラウザーで認証が完了すると、コールバックが該当するアプリに正しくルーティングされます。5
App Component のセットアップ
選択した実装方法に応じて、メインのアプリコンポーネントを設定します。
- Hooksベース(Providerあり)
- クラスベース(Providerなし)
App.tsx の内容を置き換え、アプリケーションを Auth0Provider コンポーネントでラップします。App.tsx
{yourDomain} はご利用の Auth0 domain に、{yourClientId} は Auth0 Dashboard に表示される Client ID に置き換えてください。6
Implement Login と Logout
ログインとログアウトを処理する画面コンポーネントを作成します。フックベースのアプローチ (推奨) またはクラスベースのアプローチのいずれかを選択できます。
- フックベース(推奨)
- クラスベース
useAuth0 フックを使用して、src/MainScreen.tsx を作成します:src/MainScreen.tsx
authorize() メソッド (hooks) または auth0.webAuth.authorize() (class) は、安全なブラウザー (iOS では ASWebAuthenticationSession、Android では Chrome Custom Tabs) で Auth0 の Universal Login を開きます。clearSession() メソッドは、ユーザーをログアウトし、ブラウザーセッションと保存されている資格情報の両方を消去します。7
アプリを実行する
React Native アプリケーションをデバイスまたはエミュレーターでビルドして実行します。iOS の場合 (macOS が必要です) :Android をお使いの場合:想定されるフロー:
- アプリが起動し、“Log In” ボタンが表示される
- Log In をタップ → ブラウザが開いて Auth0 Universal Login が表示される
- ログインを完了する (サインアップまたはサインイン)
- ブラウザが閉じる → 自動的にアプリに戻る
- 名前、メールアドレス、アバターが表示されたユーザープロファイルが表示される
チェックポイントこれで、お使いの端末またはエミュレーターで、Auth0 のログイン機能が完全に動作するようになっているはずです。アプリでは安全なブラウザー認証を使用し、資格情報も自動的に管理されます。
トラブルシューティングと高度な設定
アクセストークンの取得
アクセストークンの取得
API 呼び出し用のトークンを取得するには、
getCredentials() メソッドを使用します:アプリ起動時に認証状態を確認する
アプリ起動時に認証状態を確認する
ユーザーがすでにログインしているかどうかを確認するには、
hasValidCredentials() を使用します:本番デプロイ
本番デプロイ
本番環境にデプロイする前に
セキュリティを強化するため、HTTPS のコールバックURLを使用してください。- Settings → Advanced Settings → Device Settings
- アプリの SHA-256 フィンガープリントを追加します
- Xcode で Associated Domains capability を追加します
- Associated Domains に
webcredentials:{yourDomain}を追加します
Auth0Provider の localAuthenticationOptions を使用して、機密性の高いアプリでは生体認証を有効にしてくださいAuth0 Dashboard でセキュリティ設定を確認してください。- Advanced Settings で OIDC Conformant を有効にします
- Token Expiration を適切に設定します
- ブルートフォース対策を設定します
- 複数のデバイスと OS バージョンでテストします
- ネットワーク障害に備えて適切なエラー処理を実装します