AI を使って Auth0 と連携する
AI を使って Auth0 と連携する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントをお使いの場合は、agent skills を利用して、数分で Auth0 認証 を自動的に追加できます。インストール:続いて、AI アシスタントに次のように依頼します:AI アシスタントが、Auth0 アプリケーションの作成、資格情報の取得、Auth0 Kotlin Multiplatform SDK の dependency の追加、Android の manifest placeholders と iOS の URL スキームの設定、Login/ログアウト flows の実装までを自動的に行います。agent skills の詳細なドキュメントを読む。
このクイックスタートは、Kotlin Multiplatform 2.0 以降、Android SDK 24 以降 (Android 7.0) 、iOS 14 以降でご利用ください。Auth0 Kotlin Multiplatform SDK は現在 1.0.0-beta.0 です。安定版のリリースまでに API が変更される可能性があるため、このバージョンを明示的に固定してください。また、Android Studio (Ladybug 以降) が必要です。iOS ターゲットの場合は、macOS 上の Xcode 15+ も必要です。
はじめる
このクイックスタートでは、Kotlin Multiplatformアプリを構成し、エンドユーザーがAuth0のUniversal Loginを使ってログイン・ログアウトできるようにし、トークンを安全に保存し、ユーザープロファイルを表示する方法を説明します。これらはすべて、AndroidとiOSの両方で動作する共有Kotlinコードから実現できます。1
新しい Kotlin Multiplatform プロジェクトを作成する
すでに Kotlin Multiplatform プロジェクトをお持ちの場合は、次のステップに進んでください。JetBrains Kotlin Multiplatform ウィザード (Android と iOS を選択し、Compose Multiplatform で UI を共有) 、または Android Studio の Kotlin Multiplatform プラグインを使用して、Compose UI を共有する新しい Kotlin Multiplatform プロジェクトを作成します。これにより、本ガイド全体で参照する標準的なレイアウトが生成されます。
このガイドでは、アプリケーション ID / バンドル識別子として
com.example.app を使用しています。この値は Auth0 のコールバック URL の一部になるため、プレースホルダーをご自身の値に置き換えてください。2
Gradle を使用して Auth0 SDK を追加
共有モジュールの
commonMain ソースセットに Auth0 Kotlin Multiplatform SDK を追加します。このライブラリは Maven Central で公開されているため、追加のリポジトリ設定は必要ありません。composeApp/build.gradle.kts を更新します:composeApp/build.gradle.kts
3
Auth0 App を設定する
Auth0 で Native アプリケーションを作成し、Android と iOS の両方について、プラットフォーム固有のコールバック URL とログアウト URL を登録します。許可するログアウト URL:
- Auth0 Dashboard にアクセスします。
- アプリケーション > アプリケーション > Create Application を選択します。
- ポップアップでアプリの名前を入力し、アプリの種類として Native を選択して、Create を選択します。
- アプリケーション詳細ページの設定タブに切り替え、Domain と Client ID をコピーします。これらは後の手順でコードに追加します。
{yourDomain} を実際の Auth0 ドメイン (例:dev-abc123.us.auth0.com) に、com.example.app をアプリケーション ID / バンドル識別子に置き換えてください。Allowed Callback URLs は、認証後にエンドユーザーを安全にアプリケーションへ戻すための設定です。一致する URL がない場合、ログインプロセスは失敗します。Allowed Logout URLs は、サインアウト後にユーザーをアプリへリダイレクトさせるための設定です。コールバックの形式には、パッケージ / バンドル識別子が埋め込まれます。Android では
SCHEME://YOUR_DOMAIN/android/APPLICATION_ID/callback、iOS では SCHEME://YOUR_DOMAIN/ios/BUNDLE_ID/callback です。既定では、スキームはアプリケーション ID / バンドル識別子と同じ値になります。重要:コールバック URL に含まれるパッケージ / バンドル名が、
applicationId (Android) およびバンドル識別子 (iOS) と完全に一致していることを確認してください。認証に失敗する場合は、これらの値が同一かどうかを確認してください。4
各プラットフォームでコールバック用スキームを登録する
SDK には また、iOS:
RedirectActivity (Android、自動的にマージされます) が同梱されており、iOS では ASWebAuthenticationSession を使ってコールバックを受け取ります。必要な作業は、各プラットフォームで URL スキームを宣言することだけです。Android: Android のビルドファイルに manifest placeholders を追加します。SDK の RedirectActivity がこれらの値を読み取ります:composeApp/build.gradle.kts
AndroidManifest.xml でインターネットの permission を request していることも確認してください:composeApp/src/androidMain/AndroidManifest.xml
iosApp/iosApp/Info.plist に URL スキームを登録します (または Xcode → ターゲット → Info → URL Types から登録) :iosApp/iosApp/Info.plist
5
Auth0 SDK を初期化する
共有の
commonMainソースセットでは、Auth0クライアントを一度だけ作成して再利用します。このクライアントは、Web Auth、Authentication API、資格情報マネージャーが共有するトランスポートを保持します。composeApp/src/commonMain/kotlin/Auth0Config.ktを作成します:composeApp/src/commonMain/kotlin/Auth0Config.kt
本番環境では、資格情報をソースコードにハードコーディングしないでください。サンプルアプリでは、
local.propertiesからauth0.domainとauth0.clientIdを読み取り、生成された構成経由で公開しています。DomainとClient IDは、どちらもAuth0 DashboardのApplication Settingsから取得できます。ドメインにhttps://スキームを含めないでください。6
Login と Logout の実装
Auth0 Kotlin Multiplatform のすべてのメソッドは、両プラットフォームで共有する Compose 画面にビューモデルを組み込みます。
Result<Success, Error> を返すコルーチンの suspend 関数です。ドメインエラーで例外がスローされることはありません。Compose の UI から state を監視できるよう、呼び出しを ViewModel でラップしてください。composeApp/src/commonMain/kotlin/AuthViewModel.kt を作成します:composeApp/src/commonMain/kotlin/AuthViewModel.kt
composeApp/src/commonMain/kotlin/App.kt
7
ユーザープロファイルを表示する
ログイン後、アクセストークンを使ってAuthentication APIの
userInfoを呼び出し、認証されたユーザーのプロファイルを取得します。composeApp/src/commonMain/kotlin/AuthViewModel.kt
アプリの起動時に有効な資格情報がすでに存在する場合は、ログイン画面をスキップできます。保存済みで有効期限内のセッションが利用可能な場合、
credentialsManager.hasValidCredentials() は true を返します。credentialsManager.getCredentials() を使用すると有効なアクセストークンを取得でき、必要に応じてリフレッシュトークンによってアクセストークンが自動的に更新されます。8
アプリを実行する
各ターゲットでビルドしてローンチします。想定されるフロー:
- アプリが起動し、“Log In” ボタンが表示されます。
- “Log In” をタップ → システムブラウザーで Auth0 Universal Login ページが開く → ログインを完了します。
- 自動的にアプリに制御が戻り、ボタンが “Log Out” に切り替わります。
- 成功です!
チェックポイントこれで、Auth0 によるLogin、ログアウト、セキュアなトークン保存、ユーザープロファイルの取得を備えた Compose Multiplatform アプリが完成しました。認証ロジックはすべて Android と iOS で共有されています。
トラブルシューティングと高度な設定
コールバック URL の不一致エラー
コールバック URL の不一致エラー
原因: SDK が生成するコールバック URL が Auth0 アプリケーションに登録されていない、またはスキームやパッケージが一致していません。対処: Application Settings の Allowed Callback URLs が、プラットフォームごとの形式と完全に一致していることを確認してください。Android では
SCHEME://YOUR_DOMAIN/android/APPLICATION_ID/callback、iOS では SCHEME://YOUR_DOMAIN/ios/BUNDLE_ID/callback です。SCHEME (既定値: アプリケーション ID) とパッケージ/バンドルは、プロジェクトの値と完全に同一である必要があります。URL は大文字と小文字が区別され、スキームは小文字でなければなりません。ブラウザーは開くがアプリに戻ってこない
ブラウザーは開くがアプリに戻ってこない
原因: コールバックスキームがプラットフォーム側で宣言されていないため、OS がリダイレクトをアプリに戻せません。対処: Android では、
composeApp/build.gradle.kts に manifestPlaceholders["auth0Scheme"] と ["auth0Domain"] が設定されていることを確認し、クリーンビルドを実行してください。iOS では、Info.plist の CFBundleURLSchemes エントリーがバンドル識別子と一致していることを確認してください。Loginがネットワークエラーやタイムアウトエラーで Result.Failure を返す
Loginがネットワークエラーやタイムアウトエラーで Result.Failure を返す
原因: デバイスが Auth0 テナントに到達できない、またはリクエストがタイムアウトしています。対処:
Auth0Account の domain が、https:// スキームを含まないテナントドメイン (例: your-tenant.us.auth0.com) になっていることを確認してください。実機の場合は、ネットワークに接続できているか確認してください。タイムアウト値は、Auth0Account に渡す NetworkingConfiguration で引き上げられます。Login後に getCredentials が失敗する
Login後に getCredentials が失敗する
原因: リフレッシュトークンが発行されていないため、期限切れの資格情報を更新できません。対処: Universal Login は既定で
offline_access scope を要求します (これによりリフレッシュトークンが返されます) 。LoginOptions で scope を上書きする場合は offline_access を含め、Auth0 Dashboard で該当アプリケーションの Refresh Tokenのローテーション を有効にしてください。Android ビルドで RedirectActivity のマージに失敗する
Android ビルドで RedirectActivity のマージに失敗する
原因:
auth0Domain / auth0Scheme の manifest placeholders が指定されていないため、SDK がマージする RedirectActivity にバインドする値がありません。対処: composeApp/build.gradle.kts の defaultConfig ブロックに両方のプレースホルダーが定義されていることを確認してください。複数のビルドフレーバーを使用している場合は、各フレーバーで定義してください。起動時にセッションを復元する
起動時にセッションを復元する
Login画面を表示する前に保存された資格情報を確認し、再訪ユーザーが Universal Login をスキップできるようにします:
access token で自社の API を呼び出す
access token で自社の API を呼び出す
Auth0 が自社 API 向けの access token を発行するように audience を指定してリクエストします:
フェデレーテッドログアウト
フェデレーテッドログアウト
Auth0 だけでなく、上流のアイデンティティプロバイダーからもユーザーをログアウトさせます:
次のステップ
- Auth0 Kotlin Multiplatform SDKの全機能と、Organizations、DPoP、パスキー、カスタムストレージを扱った
EXAMPLES.mdを確認する。 - Android + iOSサンプルアプリの完全版を実行してみる。
- Auth0 Universal Loginとリフレッシュトークンについて詳しく学ぶ。