AI を使って Auth0 を組み込む
AI を使って Auth0 を組み込む
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して、数分で Auth0認証を自動的に追加できます。まず、Auth0 agent skills をインストールします。次に、AI アシスタントに次のように依頼します。AI アシスタントが、Auth0アプリケーションの作成、資格情報の取得、Auth0 React SDK と Capacitor プラグインのインストール、ディープリンクの設定、さらにネイティブブラウザー連携によるログイン/ログアウト フローの実装まで自動で行います。詳しくは、Auth0 agent skills をご覧ください。
はじめに
1
新しいプロジェクトを作成する
Capacitor を使って新しい Ionic React アプリを作成するプロジェクトを開く
すでに Ionic React アプリがある場合は、Capacitor が有効になっていることを確認してください。
ionic integrations enable capacitor を実行し、続けて npx cap init を実行すると追加できます。2
Auth0 React SDK と Capacitor プラグインのインストール
Ionic のスターターテンプレートでは 次に、Auth0 SDK と Capacitor プラグインをインストールします。
react@19.0.0 が作成されることがありますが、これは Auth0 React SDK と互換性がありません。まず、サポートされている React バージョンを使用していることを確認してください。@auth0/auth0-react: Auth0認証向けの React フックとコンポーネントを提供します@capacitor/browser: デバイスのシステムブラウザーでログインページを開きます (iOS では SFSafariViewController、Android では Chrome Custom Tabs)@capacitor/app: Auth0 がアプリにリダイレクトして戻る際のディープリンクのコールバックを処理します
iOS の Capacitor Browser プラグインは
SFSafariViewController を使用しますが、iOS 11 以降ではデバイス上の Safari と Cookie を共有しません。つまり、それらのデバイスでは SSO は動作しません。SSO が必要な場合は、ASWebAuthenticationSession を使用する互換性のあるプラグインを使用してください。3
Auth0 Appを設定する
次に、Auth0 テナントで新しいアプリを作成し、プロジェクトに環境変数を追加します。Auth0アプリを設定する方法は3つあります。Quick Setupツールを使用する (推奨) 、CLIコマンドを実行する、またはAuth0 Dashboardから手動で設定する方法です。
このQuickstartでは、
YOUR_PACKAGE_ID はアプリケーションのパッケージ ID を指します。これは capacitor.config.ts ファイル内の appId フィールドです (例: io.ionic.starter) 。詳しくは、Capacitor の Config schema をご覧ください。- クイック設定(推奨)
- CLI
- Auth0 Dashboard
Auth0 App を作成し、適切な設定値があらかじめ入力された また、アプリケーションの種類 が Native に、トークンエンドポイント認証方式 が None に設定されていることも確認してください。
.env ファイルをコピーします。アプリを作成したら、Auth0 Dashboard で 設定 を開き、Allowed Callback URLs と Allowed Logout URLs を更新して、YOUR_PACKAGE_ID を実際のパッケージ ID に、YOUR_AUTH0_DOMAIN をご利用の Auth0 ドメインに置き換えます。4
Auth0Providerを設定する
src/main.tsx を開き、App コンポーネントを Auth0Provider でラップします。useRefreshTokens と useRefreshTokensFallback はモバイル向けの設定で、iOS および Android の Ionic アプリでは必要です。src/main.tsx
useRefreshTokens: Android と iOS の Ionic では必須です。モバイルブラウザーではサードパーティ Cookie がブロックされるため、SDK は iframe ベースのサイレント認証ではなく、リフレッシュトークンを使用します。useRefreshTokensFallback: モバイルでは iframe ベースのサイレント認証を利用できないため、SDK がそれを試行しないよう、falseに設定する必要があります。authorizationParams.redirect_uri: OS が Auth0 のコールバックをアプリに戻せるように、パッケージ ID をカスタム URL スキームとして使用します。
5
Login、Logout、Profile、コールバックの各ハンドラーを作成する
ファイルを作成する次のコードスニペットを追加してください
LoginButtonとLogoutButtonのopenUrlコールバックは、Capacitorのブラウザプラグインを使用して、アプリを完全に離れることなく、デバイスのシステムブラウザコンポーネント内でAuth0のログインページとログアウトページを開きます。App コンポーネントは appUrlOpen イベントをリッスンしており、Auth0 がカスタム URL スキームを使用してアプリにリダイレクトする際に発火します。handleRedirectCallback を呼び出して認可コードをトークンに交換し、その後ブラウザを閉じます。デフォルトでは、SDK の
loginWithRedirect メソッドは window.location.href を使用してログインページに移動するため、デバイスの既定のブラウザーアプリケーションが開きます。openUrl が Browser.open を使うように設定すると、認証フローをアプリ内で完結でき、ユーザー体験が向上します。6
アプリを起動する
まずはブラウザでテストするデバイスまたはシミュレーターで実行するには、まず Native プラットフォームを追加します。次に、ビルド、同期、実行を行います。
実行する前に、
npx cap add を使ってネイティブプラットフォームを追加する必要があります。これは各プラットフォームにつき一度だけ行えば済みます。以降、npx cap sync を実行すると、ビルド済みの Web アセットがコピーされ、ネイティブプラグインが更新されます。チェックポイントこれで、Ionic アプリで Auth0 login が完全に動作するようになっているはずです。デバイス上で実行している場合は、「Log in」をタップするとシステムブラウザーで Auth0 Universal Login ページが開き、認証後、ユーザーのプロファイルが表示された状態でアプリにリダイレクトされます。
高度な使い方
カスタム URL スキームの設定(iOS と Android)
カスタム URL スキームの設定(iOS と Android)
デバイスで Auth0 のコールバックを機能させるには、各プラットフォームでパッケージ ID をカスタム URL スキームとして登録します。iOS — Android —
ios/App/App/Info.plist に追加します。ios/App/App/Info.plist
android/app/src/main/AndroidManifest.xml のメイン <activity> 内にインテントフィルターを追加します。android/app/src/main/AndroidManifest.xml
io.ionic.starter は、capacitor.config.ts の実際の appId に置き換えてください。詳しくは、iOS は Defining a Custom URL Scheme、Android は Create Deep Links to App Content をご覧ください。
Ionic Router でルートを保護する
Ionic Router でルートを保護する
Auth0 の認証状態を使って、Ionic アプリケーション内の特定のルートを保護できます。
src/App.tsx
withAuthenticationRequired HOC は、未認証のユーザーが保護されたルートにアクセスしようとすると、自動的に Auth0 のログインページにリダイレクトします。保護された API を呼び出す
保護された API を呼び出す
Auth0Provider を設定して API の audience を含め、次に、コンポーネントから認証付きの API 呼び出しを行います。
getAccessTokenSilently メソッドを使ってバックエンド用のアクセストークンを取得します。src/main.tsx
src/ApiCall.tsx