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 (ベータ版) にも対応しています。これらのプラットフォーム向けには、専用の Quickstart があります。
- Flutter Web Quickstart — ブラウザー向け Flutter アプリ用
- Flutter Windows Quickstart — Windows 上で動作する Flutter デスクトップアプリ向け (ベータ版)
はじめに
1
新しいFlutterプロジェクトを作成
このQuickstart向けに、新しい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 をプロジェクトに追加します。これにより、
auth0_flutter が pubspec.yaml の依存関係に追加されます。pubspec.yaml
3
Auth0 Appを設定する
次に、Auth0 テナントで新しいアプリを作成し、コールバック URL を設定します。Allowed Logout URLs:上記のコールバック設定で使用したものと同じ URL を Allowed Logout URLs フィールドに追加します。
- Auth0 Dashboard に移動します
- アプリケーション > アプリケーション > Create Application をクリックします
- ポップアップでアプリ名を入力し、アプリの種類として
Nativeを選択して Create をクリックします - アプリケーションの詳細ページで 設定 タブに切り替えます
- 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
Implement Login とロゴアウト
Universal Login は、アプリケーションに認証を設定する最も簡単な方法です。最適なユーザー体験、高いセキュリティ、そして最も充実した機能を利用できるため、これを使用することをお勧めします。ログインを実装する:Auth0 Flutter SDK をインポートし、Implement ログアウト:
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を表示して起動する
- ユーザーがログインをタップする → ブラウザーまたはカスタムタブで Auth0 Universal Login が開く
- ユーザーが認証を完了する
- ブラウザーからアプリにリダイレクトされる
- ユーザーは認証され、資格情報が保存される
チェックポイントこれで、Flutterアプリケーションで Auth0 によるログインを問題なく利用できるようになりました。このアプリは、安全なブラウザベースの認証を使用し、セッションを維持するための資格情報を自動的に保存します。
トラブルシューティングと高度な使い方
よくある問題と解決策
よくある問題と解決策
コールバックURLの不一致
症状: “redirect_uri_mismatch” エラーが表示される、または認証が失敗しても何も表示されません。解決策:- Auth0 Dashboard の Allowed Callback URLs がアプリの設定と完全に一致しているか確認する
- スキーム (
https://とhttp://) を確認する - パッケージ名 (Android) またはバンドル識別子 (iOS/macOS) が正しいことを確認する
- 末尾のスラッシュが付いていないか確認する
Android: Chrome Custom Tab が開かない
症状:login() を呼び出しても何も起こりません。対処法:build.gradleでmanifestPlaceholdersが正しく設定されていることを確認するAndroidManifest.xmlにインターネット権限があることを確認する:- Chrome または別のブラウザーが端末にインストールされていることを確認する
iOS: 「App で開く」アラート
症状: アプリで開くかどうかを確認するアラートが表示されます。対処法: これはASWebAuthenticationSession の想定どおりの動作です。表示させないようにするには:- Universal Links を使用する (iOS 17.4 以降と有料の Apple Developer アカウントが必要)
- または
useEphemeralSession: trueを設定する (SSO を無効化) :
ユーザーによって認証がキャンセルされた
エラー処理で適切に対応します:資格情報の管理
資格情報の管理
Auth0 Flutter SDK には、ユーザーの資格情報を安全に保存する組み込みの Credentials Manager が含まれています。モバイルプラットフォームでは、資格情報は暗号化され、プラットフォームの安全なストレージ (iOS/macOS では Keychain、Android では暗号化された SharedPreferences) に保存されます。
保存済みの資格情報を確認する
ユーザーにログインを求める前に、有効な資格情報がすでにあるか確認します:lib/auth_service.dart
保存済みの資格情報を取得する
アクセストークンやユーザー情報にアクセスするために資格情報を取得します。Credentials Manager は、可能であれば期限切れのトークンを自動的に更新します:lib/auth_service.dart
エラー処理
エラー処理
適切に認証エラーを処理して、優れたユーザー体験を提供しましょう。
lib/auth_service.dart
高度な Flutter 連携
高度な Flutter 連携
生体認証による資格情報のセキュリティ強化
モバイルで資格情報へのアクセスに生体認証を実装します。lib/secure_auth_service.dart
Android: Step 4 の設定どおり、
MainActivity は FlutterFragmentActivity を継承している必要があります。iOS/macOS: Info.plist に NSFaceIDUsageDescription を追加する必要があります。カスタムスコープと audience
API に対して特定のスコープと audience をリクエストします。lib/auth_service.dart
Organizations (B2B/Enterprise)
特定の organization 内でユーザーを認証します。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を使用する