Skip to main content

AI を使って Auth0 を統合

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使えば、Agent Skills を使って数分で Auth0 認証を自動的に追加できます。インストール:
続けて、AI アシスタントに次のように依頼します:
AI アシスタントが、Auth0 アプリケーションの作成、資格情報の取得、Auth0 OidcClient SDK のインストール、プラットフォーム固有の設定、ログイン/ログアウト フローの実装を自動で行います。Agent Skills の完全なドキュメント →

はじめに

1

.NET の新しいプロジェクトを作成する

この Quickstart 用に、新しい .NET MAUI または .NET Android/iOS プロジェクトを作成します。
Visual Studio 2022 以降の場合:
  1. ファイル新規プロジェクト
  2. .NET MAUI App テンプレートを選択します
  3. プロジェクトを設定します。
    • プロジェクト名: Auth0MauiSample
    • 場所: 任意の場所を選択します
    • フレームワーク: .NET 8.0 以降
  4. Create をクリックします
この Quickstart では、Xamarin.Android と Xamarin.iOS の次世代である .NET Android と .NET iOS を対象としています。現在も Xamarin を使用している場合でも、連携方法は同じで SDK にも互換性があるため、このガイドに沿って進めることができます。
2

Auth0 SDK をインストールする

Auth0 OIDC Client SDK をプロジェクトに追加します。
Package Manager Console (ViewOther WindowsPackage Manager Console) を開き、適切なパッケージをインストールします。.NET Android の場合:
Package Manager Console
.NET iOS の場合:
Package Manager Console
.NET MAUI (両方のプラットフォーム) の場合:
Package Manager Console
Auth0 OIDC Client SDK は、OAuth 2.0 と OIDC のプロトコルに関する複雑な処理をすべて担い、authentication のためのシンプルな API を提供します。
3

Auth0 App を設定する

Auth0 テナントに新しいアプリケーションを作成し、モバイル向けに設定します。
  1. Auth0 Dashboard に移動します
  2. ApplicationsApplicationsCreate Application をクリックします
  3. アプリの名前を入力し、アプリケーションタイプとして Native を選択して、Create をクリックします
  4. アプリケーションの詳細ページで 設定 タブに切り替えます
  5. DomainClient ID を控えます。次の手順で使用します
コールバック URL を設定する:設定 タブで、次の URL を追加します。Allowed Callback URLs:
置き換える箇所:
  • YOUR_ANDROID_PACKAGE_NAME はアプリのパッケージ名に置き換えます (例: com.mycompany.myapp)
  • {yourDomain} は Auth0 のドメインに置き換えます (例: dev-abc123.us.auth0.com)
例: com.mycompany.myapp://dev-abc123.us.auth0.com/android/com.mycompany.myapp/callback
Allowed Logout URLs:コールバック URL と同じ URL を使用します。
コールバック URL とログアウト URL は 小文字 で指定してください。一致しない URL を使用すると、認証は失敗します。
Allowed Callback URLs はセキュリティ上重要です。これにより、認証後にユーザーを安全にアプリケーションへ戻せます。一致する URL がない場合、ログインプロセスは失敗します。Allowed Logout URLs を設定すると、ユーザーのサインアウト時に Auth0 のページに残すことなく、アプリへリダイレクトできます。
4

Auth0 クライアントを初期化する

Auth0 と通信するために、Auth0Client インスタンスを作成します。
MainActivity.cs
YOUR_ANDROID_PACKAGE_NAME{yourDomain}{yourClientId} は実際の値に置き換えてください。DataSchemeDataHostDataPathPrefix 内のテキストはすべて小文字にしてください。
IntentFilter は、アプリがコールバック URL を処理できるよう登録するためのものです。LaunchMode.SingleTask を指定することで、コールバック時に Android が新しい activity インスタンスを作成しないようにします。
保守性を高めるため、Auth0 domain と client ID はハードコードせず、設定ファイルまたはアプリの設定に保存してください。
5

Implement Login と Logout

ユーザー認証を行うためのメソッドを追加します。Implement Login:
Authentication.cs
Implementのログアウト:
Authentication.cs
LoginAsync() メソッドは、Auth0 の Universal Login ページを表示するために、システムブラウザー (Android では Chrome Custom Tabs) を起動します。authentication の完了後、ユーザーは callback URL を介してアプリにリダイレクトされます。
これらのメソッドを MainActivity (Android) または ViewController (iOS) に追加し、ユーザーが Login/Logout ボタンをタップしたときに呼び出します。
6

アプリを実行

アプリケーションをビルドして実行します。
Android の場合:
  1. デバイスのドロップダウンから Android エミュレーターまたは接続済みのデバイスを選択します
  2. F5 キーを押すか、Run ボタンをクリックします
  3. アプリがビルド、デプロイされ、起動します
iOS の場合 (Mac ビルドホストが必要) :
  1. Mac ビルドホストに接続します
  2. デバイスのドロップダウンから iOS シミュレーターまたはデバイスを選択します
  3. F5 キーを押すか、Run ボタンをクリックします
想定されるフロー:
  1. Login ボタンが表示された状態でアプリが起動します
  2. Log In をタップ → ブラウザーまたは Chrome Custom Tab が開く → 認証を完了します
  3. 自動的にアプリにリダイレクトされます
  4. ユーザーの認証が正常に完了します
初回実行時には、認証のためにブラウザーを開いてよいか iOS から確認を求められることがあります。これは正常で、想定された動作です。
チェックポイントこれで、.NET Android または iOS のアプリケーションで、Auth0 login を問題なく利用できるようになりました。アプリケーションは安全な認証のためにシステムブラウザーを使用し、コールバックフローも自動的に処理します。

ユーザー情報にアクセスする

認証に成功すると、ログイン結果からユーザー情報にアクセスできます。

認証結果

LoginAsync() メソッドは、以下を含む LoginResult オブジェクトを返します。
UserInfo.cs

すべてのクレームを確認する

利用可能なすべてのユーザー情報を確認するには:
UserClaims.cs
返されるクレームの内容は、リクエストしたスコープによって異なります。詳しくは、Auth0 OIDC Client のドキュメントの スコープの使用 を参照してください。

カスタムスコープをリクエストする

追加のユーザー情報を取得するには、Auth0Clientの作成時にスコープを指定します:
CustomScopes.cs

トラブルシューティングと Advanced

ブラウザーからアプリにリダイレクトされない

解決策:
  1. Auth0 Dashboard のコールバック URL が、アプリのパッケージ名またはバンドル識別子と完全に一致していることを確認します
  2. コールバック URL が 小文字 になっていることを確認します
  3. DataSchemeDataHostDataPathPrefix (Android) または URL スキーム (iOS) が設定内容と一致していることを確認します
  4. プロジェクトをクリーンし、再ビルドします

”Invalid Callback URL” エラーで認証に失敗する

修正方法:
  • Auth0 Dashboard のコールバック URL が次の形式と一致していることを再確認します:
    • Android: packagename://yourdomain/android/packagename/callback
    • iOS: bundleidentifier://yourdomain/ios/bundleidentifier/callback
  • URL が小文字になっていることを確認します
  • コード内の Domain が Auth0 Dashboard の Domain と一致していることを確認します

LoginAsync() が応答しない、または完了しない

解決策:
  • Intent filter (Android) または URL スキーム (iOS) が正しく設定されていることを確認します
  • OnNewIntent() (Android) または OpenUrl() (iOS) から ActivityMediator が呼び出されていることを確認します
  • アプリからシステムブラウザーを開けることを確認します
  • ネットワーク接続を確認します

エラー: “Default App must use Token Endpoint Authentication Method ‘None’”

修正方法:
  1. Auth0 Dashboard の Auth0 アプリケーションの設定に移動します
  2. Application Properties までスクロールします
  3. Application TypeNative に設定します
  4. Token Endpoint Authentication MethodNone に設定します
  5. 変更を保存 をクリックします

iOS: ブラウザーが開かない

解決策:
  • Info.plist に正しい URL スキーム設定が含まれていることを確認します
  • OpenUrl()AppDelegate に実装されていることを確認します
  • iOS のデプロイ対象が使用中の Auth0 SDK のバージョンと互換性があることを確認します

セキュリティのベストプラクティス

  • 安全なトークン保存: トークンの保存には、プラットフォーム固有の安全なストレージ (Android Keystore、iOS Keychain) を使用します
  • トークンの更新: ユーザーセッションを維持するため、リフレッシュトークンの処理を実装します
  • 証明書ピンニング: API セキュリティをさらに強化するために、証明書ピンニングを検討します
  • ProGuard/コード難読化: Android でコード難読化を使用する場合は、適切なルールを追加します

App Store の要件

  • プライバシーポリシー: Auth0 の利用について説明したプライバシーポリシーがアプリにあることを確認します
  • ユーザーデータの取り扱い: ユーザーの認証データの取り扱いについて、プラットフォームのガイドラインに従います
  • ディープリンク: さまざまなシナリオでコールバック URL の処理を十分にテストします
  • ネットワーク要件: オフライン時にも適切に対応できるようにします

パフォーマンスの最適化

  • Auth0Client をキャッシュする: インスタンスを 1 つだけ作成し、アプリ全体で再利用します
  • 遅延読み込み: 必要になったときにのみ Auth0Client を初期化します
  • バックグラウンド更新: 長時間のセッションに備えて、バックグラウンドでのトークン更新を実装します

カスタムスコープと audience

特定のスコープをリクエストし、API の audience を設定します。
AdvancedAuth.cs

追加パラメータ

認可リクエストに追加のパラメータを渡します。
ExtraParams.cs

リフレッシュトークン

リフレッシュトークンを使用すると、ユーザーの操作なしで新しいアクセストークンを取得できます。
RefreshToken.cs
リフレッシュトークンを受け取るには、認証リクエストに offline_access スコープを含めてください。

プラットフォーム固有のブラウザ設定

Android - カスタムカラーで Chrome Custom Tabs を使用する:
AndroidBrowser.cs
iOS - カスタム表示で SFSafariViewController を使用する:
iOSBrowser.cs

次のステップ

IDプロバイダーを設定する

Google、Facebook、GitHub などのソーシャルログイン用プロバイダーを追加する

多要素認証を有効にする

MFA でセキュリティをさらに強化する

攻撃対策

ブルートフォース攻撃やボット攻撃から保護する方法を学ぶ

ログインエクスペリエンスをカスタマイズする

ブランドに合わせて Universal Login ページをカスタマイズする