Skip to main content

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 を使用して Flutter アプリケーションに Auth0 を統合する方法を説明します。AndroidiOSmacOS プラットフォーム向けの設定を扱います。
Auth0 Flutter SDK は WebWindows (ベータ版) にも対応しています。これらのプラットフォーム向けには、専用の Quickstart があります。

はじめに

1

新しいFlutterプロジェクトを作成

このQuickstart向けに、新しいFlutterプロジェクトを作成します。ターミナルで:
  1. ワークスペースのディレクトリに移動します
  2. 次を実行します: flutter create auth0_flutter_sample
  3. プロジェクトのディレクトリに移動します: cd auth0_flutter_sample
  4. IDEで開きます:
    • VS Code: code .
    • Android Studio: open -a "Android Studio" .
これにより、最新のプロジェクト構成を採用したモダンな Flutter アプリが作成されます。flutter doctor を実行して、環境が正しくセットアップされていることを確認してください。
2

Auth0 Flutter SDKをインストール

Flutter CLI を使用して、Auth0 Flutter SDK をプロジェクトに追加します。
これにより、auth0_flutterpubspec.yaml の依存関係に追加されます。
pubspec.yaml
Auth0 Flutter SDK では、Flutter 3.24.0+Dart 3.5.0+ が必要です。flutter doctor を実行して、お使いの環境がこれらの要件を満たしていることを確認してください。
3

Auth0 Appを設定する

次に、Auth0 テナントで新しいアプリを作成し、コールバック URL を設定します。
  1. Auth0 Dashboard に移動します
  2. アプリケーション > アプリケーション > Create Application をクリックします
  3. ポップアップでアプリ名を入力し、アプリの種類として Native を選択して Create をクリックします
  4. アプリケーションの詳細ページで 設定 タブに切り替えます
  5. DomainClient ID の値を控えておきます。これらは後で使用します
設定 タブで、対象のプラットフォームに応じて以下の URL を設定します。Allowed Callback URLs:
Allowed Logout URLs:上記のコールバック設定で使用したものと同じ URL を Allowed Logout URLs フィールドに追加します。
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/callback
重要: コールバック URL 内のパッケージ名 (Android) またはバンドル ID (iOS/macOS) が、実際のアプリ識別子と一致していることを確認してください。認証に失敗する場合は、これらの値が完全に一致しているか確認してください。
4

アプリケーションを設定する

認証フローを有効にするには、プラットフォームごとの設定が必要です。対象とする各プラットフォームについて、以下の手順に従ってください。
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
Android: auth0Domain の値がご利用の Auth0 ドメインと完全に一致していることを確認してください。認証に失敗する場合は、この値が Auth0 Dashboard に表示されているドメインと同一か確認してください。iOS/macOS: Universal Links を利用するには、有料の Apple Developer アカウントと iOS 17.4+/macOS 14.4+ が必要です。これより古いバージョンでは、SDK は自動的にカスタム URL スキームにフォールバックします。
5

Implement Login とロゴアウト

Universal Login は、アプリケーションに認証を設定する最も簡単な方法です。最適なユーザー体験、高いセキュリティ、そして最も充実した機能を利用できるため、これを使用することをお勧めします。ログインを実装する:Auth0 Flutter SDK をインポートし、Auth0 インスタンスを作成します。
lib/auth_service.dart
Implement ログアウト:
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
特定のユーザープロファイル項目にアクセスするには、ログイン時に適切なスコープをリクエストしてください。デフォルトのスコープは openidprofileemailoffline_access です。
7

アプリを起動する

Flutter アプリケーションをビルドして実行します。ターミナルで:
想定されるフロー:
  1. アプリがログインUIを表示して起動する
  2. ユーザーがログインをタップする → ブラウザーまたはカスタムタブで Auth0 Universal Login が開く
  3. ユーザーが認証を完了する
  4. ブラウザーからアプリにリダイレクトされる
  5. ユーザーは認証され、資格情報が保存される
チェックポイントこれで、Flutterアプリケーションで Auth0 によるログインを問題なく利用できるようになりました。このアプリは、安全なブラウザベースの認証を使用し、セッションを維持するための資格情報を自動的に保存します。

トラブルシューティングと高度な使い方

Auth0 Flutter SDK には、ユーザーの資格情報を安全に保存する組み込みの Credentials Manager が含まれています。モバイルプラットフォームでは、資格情報は暗号化され、プラットフォームの安全なストレージ (iOS/macOS では Keychain、Android では暗号化された SharedPreferences) に保存されます。

保存済みの資格情報を確認する

ユーザーにログインを求める前に、有効な資格情報がすでにあるか確認します:
lib/auth_service.dart

保存済みの資格情報を取得する

アクセストークンやユーザー情報にアクセスするために資格情報を取得します。Credentials Manager は、可能であれば期限切れのトークンを自動的に更新します:
lib/auth_service.dart
ログイン後に資格情報を手動で保存する必要はありません。SDK が自動的に処理します。また、トークンを手動で更新する必要もありません。必要に応じて Credentials Manager が更新します。
適切に認証エラーを処理して、優れたユーザー体験を提供しましょう。
lib/auth_service.dart

生体認証による資格情報のセキュリティ強化

モバイルで資格情報へのアクセスに生体認証を実装します。
lib/secure_auth_service.dart
Android: Step 4 の設定どおり、MainActivityFlutterFragmentActivity を継承している必要があります。iOS/macOS: Info.plistNSFaceIDUsageDescription を追加する必要があります。

カスタムスコープと 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 を使用する

次のステップ

DPoP、生体認証、パスワードレスログインなどの高度なシナリオを含む、さまざまな機能に対応した詳しいコード例については、SDK リポジトリ内の EXAMPLES.md ファイルをご覧ください。