AI を使って Auth0 を連携する
AI を使って Auth0 を連携する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、agent skills を利用して、数分で Auth0 認証を自動的に追加できます。
まず、Auth0 agent skills をインストールします。次に、AI アシスタントに次のように依頼します。AI アシスタントが、Auth0 アプリケーションの作成、資格情報の取得、Auth0 Vue SDK と Capacitor プラグインのインストール、ディープリンクの設定、さらにネイティブ ブラウザー連携によるログイン/ログアウト フローの実装まで、自動的に行います。Auth0 agent skills の詳細をご覧ください。
はじめに
1
新規プロジェクトを作成する
Capacitor で新しい Ionic Vue プロジェクトを作成するプロジェクトを開く
2
Auth0 Vue SDK と Capacitor プラグインのインストール
@capacitor/browser は、セキュアな認証のために、Auth0 Universal Login ページをデバイスのシステムブラウザー (iOS では SFSafariViewController、Android では Chrome Custom Tabs) で開きます。@capacitor/app はディープリンクイベントを監視し、ログイン後に Auth0 がリダイレクトした際の OAuth コールバックをアプリで処理できるようにします。3
Auth0 App の設定
次に、Auth0 テナントに新しいアプリを作成します。Ionic Capacitor アプリでは、カスタム URL スキームのコールバックを使用する Native アプリケーションタイプを使用します。Auth0 アプリの設定方法は 3 つあります。Quick Setup ツール (推奨) を使う方法、CLI コマンドを実行する方法、または Auth0 Dashboard で手動設定する方法です。
- Quick Setup (推奨)
- CLI
- Dashboard
Auth0 の Native アプリケーションを作成し、資格情報を取得します。アプリを作成したら、次の手順で使用する Domain と Client ID の値を控えておきます。
callback URL と logout URL も Auth0 Dashboard で設定する必要があります。詳しくは、以下の URL 設定を参照してください。
4
Auth0プラグインを設定する
src/main.ts
useRefreshTokens: true— モバイルブラウザーではサードパーティ Cookie がブロックされるため、iframe ベースのサイレント認証は動作しません。リフレッシュトークンは/oauth/tokenエンドポイントを直接呼び出します。useRefreshTokensFallback: false— モバイルでは利用できない iframe ベースのフォールバックを SDK が試行しないようにします。router.isReady().then(...)— SDK が OAuth コールバックを処理する前に Vue Router が完全に初期化されるようにし、競合状態を防ぎます。
5
認証コンポーネントを作成する
コンポーネントファイルを作成する以下のコードを新しいコンポーネントに追加し、既存の
App.vueとHomePage.vueを更新してください。6
アプリを起動する
まずはブラウザでテストしましょう:デバイスまたはシミュレーターで実行するには、まず Native プラットフォームを追加します。次に、ビルド、同期、実行を行います。
実行する前に、
npx cap add を使って Native プラットフォームを追加する必要があります。これは各プラットフォームにつき一度だけ行えば十分です。事前に、そのプラットフォーム用のカスタム URL スキームを登録しておいてください。Checkpointこれで、Ionic Vueアプリケーションで、ログイン、ログアウト、ユーザープロファイル情報を備えた、Auth0によるログイン機能がひととおり利用できるようになりました。
高度な使い方
カスタムURLスキームの設定
カスタムURLスキームの設定
認証後に OAuth コールバックをアプリに戻せるように、OS がルーティングできるようアプリのカスタム URL スキームを登録します。詳しくは、Create Deep Links to App Content を参照してください。
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> タグ内にインテントフィルタを追加します。Vue Router でルートを保護する
Vue Router でルートを保護する
authentication が必要なルートを保護するには、Auth0 Vue SDK に組み込まれている
authGuard を使用します。src/router/index.ts
authGuard は、未認証のユーザーを自動的に Auth0 Universal Login ページへリダイレクトします。ログイン後は、最初にアクセスしようとしていたルートに戻ります。保護された API を呼び出す
保護された API を呼び出す
API 用のアクセストークンをリクエストするには、次に、コンポーネント内で
createAuth0 の設定で audience パラメータを設定します。src/main.ts
getAccessTokenSilently を使ってトークンを取得し、認証付きの API 呼び出しを行います。src/components/ApiCall.vue
defineComponent パターンを使用する
defineComponent パターンを使用する
<script setup> よりも明示的な defineComponent パターンを使いたい場合、LoginButton コンポーネントは次のようになります。src/components/LoginButton.vue
defineComponent パターンでは、子コンポーネントを明示的に登録し、setup() 関数から値を返す必要があります。どちらのパターンも Auth0 Vue SDK で完全にサポートされています。