AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot のような AI コーディングアシスタントを使用している場合は、agent skills を使って数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに以下のように依頼します:AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、
auth0_flutter SDK 依存関係の追加、Android と iOS のコールバックURLの設定、セキュアな認証情報ストレージを使用した Web Auth のログイン/ログアウトの実装を自動的に行います。agent skills の完全なドキュメント →Auth0 Flutter SDK は、Web と Windows (ベータ版) もサポートしています。これらのプラットフォーム向けには専用のクイックスタートがあります。
- Flutter Web クイックスタート — ブラウザーを対象とする Flutter アプリ向け
- Flutter Windows クイックスタート — Windows 上の Flutter デスクトップアプリ向け (ベータ版)
はじめに
1
新しい Flutter プロジェクトを作成する
このクイックスタート向けに、新しい Flutter プロジェクトを作成します。ターミナルで:
- ワークスペースのディレクトリに移動します
- 次を実行します:
flutter create auth0_flutter_sample - プロジェクトディレクトリに移動します:
cd auth0_flutter_sample - IDE で開きます:
- VS Code:
code . - Android Studio:
open -a "Android Studio" .
- VS Code:
2
Auth0 Flutter SDK をインストールする
Flutter CLI を使用して、プロジェクトに Auth0 Flutter SDK を追加します。これにより、
pubspec.yaml の依存関係に auth0_flutter が追加されます。pubspec.yaml
3
Auth0 アプリを設定する
次に、Auth0テナントに新しいアプリを作成し、コールバックURLを設定します。Allowed Logout URLs:上記のコールバック設定と同じURLを Allowed Logout URLs フィールドに追加します。
- Auth0 Dashboard に移動します
- Applications > Applications > Create Application をクリックします
- ポップアップでアプリの名前を入力し、アプリの種類として
Nativeを選択して、Create をクリックします - Application Details ページで Settings タブに切り替えます
- Domain と Client ID の値を控えておきます。後で必要になります
- Android
- iOS
- macOS
Allowed Callback URLs は、認証後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致する URL がない場合、ログイン処理は失敗します。Allowed Logout URLs は、サインアウト後にシームレスなユーザー体験を提供するために重要です。一致する URL がない場合、ログアウト後にユーザーはアプリケーションへリダイレクトされません。たとえば、Auth0 のドメインが
example.us.auth0.com で、Android パッケージ名が com.example.myapp の場合、Android のコールバック URL は次のようになります: https://example.us.auth0.com/android/com.example.myapp/callback4
アプリケーションを設定する
認証フローを有効にするには、プラットフォームごとの設定が必要です。対象とする各プラットフォームについて、以下の手順に従ってください。
- Android
- iOS
- macOS
android/app/build.gradle ファイルを開き、android > defaultConfig 内に以下の manifest placeholders を追加します。android/app/build.gradle
{yourDomain} は、自分の Auth0 ドメイン (例: example.us.auth0.com) に置き換えてください。https スキームコールバック URL で https スキームを使用するには、アプリケーションに Android app links を設定します。生体認証を使用する場合 (任意) :生体認証を使用する予定がある場合は、MainActivity.kt を更新して FlutterFragmentActivity を継承するようにしてください。android/app/src/main/kotlin/.../MainActivity.kt
5
ログインとログアウトを実装する
Universal Login は、アプリケーションに認証を設定する最も簡単な方法です。最適なユーザー体験、高いセキュリティ、そして最も豊富な機能を利用できるため、これを使用することを推奨します。ログインを実装する:Auth0 Flutter SDK をインポートし、ログアウトを実装する:
Auth0 インスタンスを作成します。lib/auth_service.dart
lib/auth_service.dart
iOS/macOS:
useHTTPS: true パラメーターを指定すると、iOS 17.4+ および macOS 14.4+ で Universal Links が有効になり、セキュリティが向上します。Android: カスタムスキームを使用している場合は、そのスキームを login メソッドに渡してください。これにより、SDK がログインページへの遷移とアプリへの復帰を正しく処理できます。6
ユーザープロフィール情報を表示
ユーザープロフィールは、ユーザーのログイン時に自動的に取得されます。
Credentials オブジェクトには user プロパティがあり、IDトークンをデコードして取得されたユーザープロフィール情報がすべて格納されます。lib/profile_screen.dart
7
アプリを実行する
Flutter アプリケーションをビルドして実行します。ターミナルで次を実行します。:想定されるフロー:
- アプリがログイン UI を表示して起動します
- ユーザーが Log In をタップ → Auth0 Universal Login を表示するブラウザー/Custom Tab が開きます
- ユーザーが認証を完了します
- ブラウザーからアプリにリダイレクトされます
- ユーザーは認証済みとなり、認証情報が保存されます
チェックポイントこれで、Flutter アプリケーションで Auth0 のログイン機能が完全に動作するようになっているはずです。アプリは安全なブラウザベースの認証を使用し、セッションを永続化するための認証情報を自動的に保存します。
トラブルシューティングと高度な使い方
一般的な問題と解決策
一般的な問題と解決策
Callback URL の不一致
症状:"redirect_uri_mismatch" エラーが表示される、または認証が失敗しても何も起こらないように見えます。解決策:- Auth0 Dashboard の Allowed Callback URLs が、アプリの設定と完全に一致していることを確認します
- スキーム (
https://とhttp://) を確認します - パッケージ名 (Android) またはバンドル識別子 (iOS/macOS) が正しいことを確認します
- 末尾のスラッシュがないか確認します
Android: Chrome Custom Tab が開かない
症状:login() を呼び出しても何も起こりません。修正方法:manifestPlaceholdersがbuild.gradleで正しく設定されていることを確認しますAndroidManifest.xmlにインターネット権限が含まれていることを確認します:- Chrome または別のブラウザーがデバイスにインストールされていることを確認します
iOS: 「App で開く」アラート
症状: アプリで開くかどうかを確認するアラートが表示されます。修正方法: これはASWebAuthenticationSession の想定された動作です。これを表示しないようにするには、次のいずれかを使用します。- Universal Links を使用します (iOS 17.4 以降と有料の Apple Developer アカウントが必要です)
- または
useEphemeralSession: trueを設定します (SSO は無効になります) :
ユーザーによって認証がキャンセルされた
エラー処理で適切に処理してください:エラー処理
エラー処理
良好なユーザー体験を提供するために、認証エラーを適切に処理してください。
lib/auth_service.dart
高度な Flutter 統合
高度な Flutter 統合
生体認証による認証情報のセキュリティ強化
モバイルで認証情報にアクセスする際に、生体認証を実装します。lib/secure_auth_service.dart
Android: ステップ 4 で設定したとおり、
MainActivity は FlutterFragmentActivity を継承している必要があります。iOS/macOS: Info.plist に NSFaceIDUsageDescription を追加する必要があります。カスタムスコープとオーディエンス
API 用に特定のスコープとオーディエンスを要求します。lib/auth_service.dart
組織 (B2B/Enterprise)
特定の組織内でユーザーを認証します。lib/auth_service.dart
本番環境へのデプロイ
本番環境へのデプロイ
App Store 公開の準備
- シームレスな認証のために Universal Links (iOS) と App Links (Android) を設定する
- 複数のデバイスサイズと OS バージョンでテストする
- ネットワーク障害に対する適切なエラー処理を実装する
- コード難読化を使用する場合は、Android に ProGuard ルールを追加する
- プラットフォーム固有の App Store/Play Store のポリシーに従う
セキュリティに関する考慮事項
- 本番環境での認証情報の保存には、組み込みの Credentials Manager を使用する
- 機密性の高い操作では生体認証を有効にする
- API セキュリティをさらに強化するため、証明書ピンニングを検討する
- 適切なトークン更新処理を実装する
- サポートされているプラットフォームでは、Universal Links に
useHTTPS: trueを使用する