AI を使って Auth0 と連携する
AI を使って Auth0 と連携する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して、数分で Auth0 の認証を自動的に追加できます。まず、Auth0 agent skills をインストールします。次に、AI アシスタントに次のように依頼します。AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、Auth0 Angular SDK と Capacitor プラグインのインストール、ディープリンクの設定、ネイティブブラウザー連携によるログイン / ログアウト フローの実装を自動的に行います。詳しくは、Auth0 agent skills をご覧ください。
はじめましょう
1
新規プロジェクトを作成する
Capacitor を使って新しい Ionic Angular プロジェクトを作成するプロジェクトを開く
2
Auth0 Angular SDK と Capacitor プラグインをインストールする
Auth0 Angular SDK と、Capacitor の Browser プラグインおよび App プラグインをインストールします:
@capacitor/browser- デバイスのシステムブラウザーで Auth0 のログインページを開きます (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から手動で設定する方法です。
- クイックセットアップ(推奨)
- CLI
- Auth0 Dashboard
Native Auth0 App を作成し、適切な設定値があらかじめ入力された環境ファイルをコピーしてください。アプリを作成したら、Auth0 Dashboard の Settings タブで Allowed Callback URLs と Allowed Logout URLs を更新します。
YOUR_PACKAGE_ID は、capacitor.config.ts の appId に置き換えてください (デフォルト: io.ionic.starter) 。Allowed Callback URLs と Allowed Logout URLs:4
Auth0 モジュールの設定
前の手順で環境ファイルを配置したら、アプリでAuth0モジュールを設定します。
src/main.ts
provideAuth0 の設定には、次の項目が含まれます。useRefreshTokens: true— モバイルでは必須です。Capacitor アプリでは iframe ベースのサイレント認証を使用できないため、セッションの更新にはリフレッシュトークンを使用します。useRefreshTokensFallback: false— モバイルでは必須です。ネイティブアプリでは利用できない iframe ベースのサイレント認証に SDK がフォールバックしないようにします。authorizationParams.redirect_uri— 認証後にアプリへ戻すため、アプリ独自の URL スキームを使用します。
5
Login、Logout、Profile コンポーネントの作成
コンポーネントファイルを作成する各コンポーネントに以下のコードを追加します:次に、Auth0コールバックを処理するようにAppコンポーネントを更新し、ホームページで作成したコンポーネントを使用します:
- App コンポーネント
- Home ページ
src/app/app.component.ts の内容を次のように置き換えます。src/app/app.component.ts
App Component 内の
appUrlOpen イベントのコールバックは、this.ngZone.run() でラップされています。これは必須です。Capacitor プラグインのコールバックは Angular の zone の外で実行されるため、これがないとログイン後の認証状態の変化を Angular が検出できません。詳しくは、Using Angular with Capacitor を参照してください。6
アプリを実行する
まずはブラウザでテストしてみましょう:デバイスまたはシミュレーターで実行するには、まずネイティブプラットフォームを追加します。次に、ビルド、同期、実行を行います。
実行する前に、
npx cap add を使ってネイティブプラットフォームを追加する必要があります。これは各プラットフォームにつき一度だけ行えば十分です。カスタム URL スキームが登録されていることを確認してください (以下の「Advanced Usage」を参照) 。チェックポイントこれで、localhost上でAuth0 のログインページが完全に動作するようになっているはずです
高度な使い方
従来の NgModule アプローチを使う
従来の NgModule アプローチを使う
--type=angular (--type=angular-standalone ではなく) でプロジェクトを作成した場合、または NgModule を使いたい場合は、AuthModule.forRoot で SDK を設定します。src/app/app.module.ts
NgModule を使う場合、
AuthService は inject() ではなくコンストラクター (constructor(public auth: AuthService)) で注入してください。テンプレートでは、@if の制御フロー構文ではなく *ngIf="auth.user$ | async as user" を使います。コンポーネントは standalone: true としてマークするのではなく、モジュール内で宣言する必要があります。カスタム URL スキームの設定
カスタム URL スキームの設定
実機で authentication をテストするには、各プラットフォームでカスタム URL スキームを登録します。または Android の場合:
iOS
ios/App/App/Info.plist にカスタム URL スキームを登録します。YOUR_PACKAGE_ID は、capacitor.config.ts の appId に置き換えてください。詳しくは、Defining a Custom URL Scheme を参照してください。Android
android/app/src/main/AndroidManifest.xml の <activity> タグ内に intent filter を追加します。YOUR_PACKAGE_ID は、capacitor.config.ts の appId に置き換えてください。詳しくは、Create Deep Links to App Content を参照してください。デバイスでビルドして実行する
AuthGuard でルートを保護する
AuthGuard でルートを保護する
関数型ガードを使って、認証が必要なルートを保護します。認証されていないユーザーが保護されたルートに移動すると、
src/app/app.routes.ts
authGuardFn は自動的に Auth0 のログインページへリダイレクトします。保護された API を呼び出す
保護された API を呼び出す
HTTP インターセプターを設定して、API 呼び出しにアクセストークンを自動的に付与します。次に、Angular の
src/main.ts
HttpClient を使って API を呼び出します。インターセプターが Bearer トークンを自動的に付与します。src/app/api.service.ts
よくある問題と解決策
よくある問題と解決策
コールバックURL不一致エラー
解決策: Auth0 Dashboard のコールバックURLが、アプリで生成されるURLと完全に一致していることを確認してください。YOUR_PACKAGE_ID が capacitor.config.ts の appId フィールドと一致していることも確認してください。ログイン後に画面が更新されない
解決策:appUrlOpen イベントのコールバックが this.ngZone.run() で囲まれていることを確認してください。これがないと、Angular は handleRedirectCallback による state の変更を検知できません。Using Angular with Capacitor を参照してください。「PKCE not allowed」エラー
修正方法:- Auth0 Dashboard > アプリケーション > Your Application に移動します
- Application Type を Native に変更します
- Token Endpoint Authentication Method を
Noneに設定します - 変更を保存して、再度お試しください
iOS で SSO が動作しない
Capacitor の Browser プラグインはSFSafariViewController を使用しますが、iOS 11 以降では Safari とクッキーを共有しません。SSO が必要な場合は、ASWebAuthenticationSession を使用する互換性のあるプラグインを利用してください。ログインは成功するが、アプリを再起動するとユーザーが未認証のままになる
アプリの再起動後も token を保持できるよう、provideAuth0 の設定で cacheLocation: 'localstorage' を有効にしてください。セキュリティ上の影響 と Capacitor のストレージ制限 に注意してください。Observable が実行されない
すべてのAuthService メソッドはコールド Observable を返します。実行するには .subscribe() を呼び出す必要があります。loginWithRedirect() や logout() が何も起きていないように見える場合は、末尾に .subscribe() がついていることを確認してください。次のステップ
- Sample Application — Auth0 連携を備えた、Ionic Angular の完全なサンプルアプリケーション
- Auth0 Angular SDK Documentation — SDK の完全なリファレンスと使用例
- Auth0 Dashboard — Auth0 テナントとアプリケーションの設定と管理
- Auth0 Marketplace — Auth0 の機能を拡張するために有効化できる連携を確認できます