AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って、数分で Auth0 認証を自動的に追加できます。インストール:次に、AI アシスタントに次のように依頼します。AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、Auth0 OidcClient SDK のインストール、プラットフォーム固有の設定、ログイン/ログアウトフローの実装を自動的に行います。agent skills の完全なドキュメント →
はじめに
新しい .NET プロジェクトを作成
このクイックスタートでは、新しい .NET MAUI または .NET Android/iOS プロジェクトを作成します。
- .NET MAUI
- .NET Android
- .NET iOS
Visual Studio 2022 以降の場合:
- File → New → Project
- .NET MAUI App テンプレートを選択します
- プロジェクトを設定します。
- Project name:
Auth0MauiSample - Location: 任意の場所を選択します
- Framework: .NET 8.0 以降
- Project name:
- Create をクリックします
このクイックスタートでは、Xamarin.Android と Xamarin.iOS の次世代版である .NET Android と .NET iOS を対象としています。現在も Xamarin を使用している場合でも、統合方法は同じで SDK には互換性があるため、このガイドに従うことができます。
Auth0 SDK をインストール
Auth0 OIDC Client SDK をプロジェクトに追加します。
- Package Manager Console
- Visual Studio for Mac
- .NET CLI
Package Manager Console (View → Other Windows → Package Manager Console) を開き、適切なパッケージをインストールします。.NET Android の場合:.NET iOS の場合:.NET MAUI (両方のプラットフォーム) の場合:
Package Manager Console
Package Manager Console
Package Manager Console
Auth0 アプリケーションを設定する
Auth0テナントに新しいアプリケーションを作成し、モバイル向けに設定します。次のように置き換えます。Allowed Logout URLs:コールバックURLと同じURLを使用します。
- Auth0 Dashboard に移動します
- Applications → Applications → Create Application をクリックします
- アプリの名前を入力し、アプリケーションタイプとして Native を選択して、Create をクリックします
- Application Details ページで Settings タブに切り替えます
- Domain と Client ID を控えておきます。これらは次の手順で使用します
- Android
- iOS
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/callbackAllowed Callback URLs はセキュリティ上重要です。これにより、認証後にユーザーが安全にアプリケーションへ戻れるようになります。一致するURLがない場合、ログイン処理は失敗します。Allowed Logout URLs を設定すると、ユーザーのサインアウト時にAuth0のページに残るのではなく、アプリにリダイレクトされるため、シームレスな体験を提供できます。
Auth0クライアントの初期化
Auth0 と通信するための
Auth0Client インスタンスを作成します。- Android - MainActivity
- iOS - AppDelegate
MainActivity.cs
IntentFilter は、コールバック URL を処理するようアプリを登録します。LaunchMode.SingleTask を指定すると、コールバック時に Android が新しいアクティビティインスタンスを作成しないようになります。ログインとログアウトの実装
ユーザー認証を処理するメソッドを追加します。ログインを実装します。ログアウトを実装する:
Authentication.cs
Authentication.cs
LoginAsync() メソッドは、システムブラウザー (Android では Chrome Custom Tabs) を起動して、Auth0 の Universal Login ページを表示します。認証後、ユーザーはコールバック URL 経由でアプリにリダイレクトされます。アプリを実行する
アプリケーションをビルドして実行します。想定されるフロー:
- Visual Studio (Windows)
- Visual Studio for Mac
- .NET CLI
Android の場合:
- デバイスのドロップダウンから Android エミュレーターまたは接続済みのデバイスを選択します
- F5 キーを押すか、Run ボタンをクリックします
- アプリがビルド、デプロイされ、起動します
- Mac ビルド ホストに接続します
- デバイスのドロップダウンから iOS シミュレーターまたはデバイスを選択します
- F5 キーを押すか、Run ボタンをクリックします
- アプリが起動し、Login ボタンが表示されます
- Log In をタップすると、ブラウザーまたは Chrome カスタムタブが開くので、認証を完了します
- 自動的にアプリにリダイレクトされます
- ユーザーの認証が正常に完了します
チェックポイントこれで、.NET Android または iOS アプリケーションで、完全に機能する Auth0 のログイン機能を利用できるようになりました。このアプリは、安全な認証のためにシステムブラウザーを使用し、コールバックフローを自動的に処理します。
ユーザー情報にアクセスする
認証結果
LoginAsync() メソッドは、次の内容を含む LoginResult オブジェクトを返します。
UserInfo.cs
すべてのクレームを確認する
UserClaims.cs
返されるクレームは、要求したスコープによって異なります。詳しくは、Auth0 OIDC Client ドキュメントの Using Scopes を参照してください。
カスタムスコープをリクエストする
CustomScopes.cs
トラブルシューティングと高度な設定
よくある問題と解決策
よくある問題と解決策
ブラウザーからアプリにリダイレクトされない
解決策:- Auth0 Dashboard のコールバック URL が、アプリのパッケージ名またはバンドル識別子と正確に一致していることを確認します
- コールバック URL が 小文字 になっていることを確認します
DataScheme、DataHost、DataPathPrefix(Android) または URL スキーム (iOS) が設定内容と一致していることを確認します- プロジェクトをクリーンし、再ビルドします
”Invalid Callback URL” エラーで認証に失敗する
修正方法:- Auth0 Dashboard のコールバック URL が次の形式と一致していることを再確認します。
- Android:
packagename://yourdomain/android/packagename/callback - iOS:
bundleidentifier://yourdomain/ios/bundleidentifier/callback
- Android:
- URL が小文字になっていることを確認します
- コード内のドメインが Auth0 Dashboard のドメインと一致していることを確認します
LoginAsync() がハングする、または完了しない
解決策:- Intent フィルター (Android) または URL スキーム (iOS) が正しく設定されていることを確認します
OnNewIntent()(Android) またはOpenUrl()(iOS) からActivityMediatorが呼び出されていることを確認します- アプリからシステムブラウザーを開けることを確認します
- ネットワーク接続を確認します
エラー: “Default App must use Token Endpoint Authentication Method ‘None’”
修正方法:- Dashboard で Auth0 アプリケーション設定を開きます
- Application Properties までスクロールします
- Application Type を Native に設定します
- Token Endpoint Authentication Method を None に設定します
- Save Changes をクリックします
iOS: ブラウザーが開かない
解決策:Info.plistに正しい URL スキーム設定が含まれていることを確認しますAppDelegateにOpenUrl()が実装されていることを確認します- iOS のデプロイターゲットが使用中の Auth0 SDK バージョンと互換性があることを確認します
本番環境での考慮事項
本番環境での考慮事項
セキュリティのベストプラクティス
- 安全なトークン保存: トークンは、プラットフォーム固有の安全なストレージ (Android Keystore、iOS Keychain) に保存します
- トークンの更新: ユーザーセッションを維持するため、リフレッシュトークンの処理を実装します
- 証明書ピンニング: API セキュリティをさらに強化するために、証明書ピンニングを検討します
- ProGuard/コード難読化: Android でコード難読化を使用する場合は、適切なルールを追加します
App Store の要件
- プライバシーポリシー: Auth0 の使用について記載したプライバシーポリシーをアプリに用意します
- ユーザーデータの取り扱い: ユーザー認証データの取り扱いについて、プラットフォームのガイドラインに従います
- ディープリンク: さまざまなシナリオでコールバック URL の処理を十分にテストします
- ネットワーク要件: オフライン時のシナリオにも適切に対応します
パフォーマンスの最適化
- Auth0Client をキャッシュする: インスタンスは 1 つだけ作成し、アプリ全体で再利用します
- 遅延読み込み: Auth0Client は必要なときにのみ初期化します
- バックグラウンド更新: 長時間のセッションに備えて、バックグラウンドでのトークン更新を実装します
高度な設定
高度な設定
カスタムスコープとオーディエンス
特定のスコープをリクエストし、API のオーディエンスを設定します。AdvancedAuth.cs
追加パラメーター
認可リクエストに追加のパラメーターを渡します。ExtraParams.cs
リフレッシュトークン
ユーザーの操作なしで新しいアクセストークンを取得するには、リフレッシュトークンを使用します。RefreshToken.cs
リフレッシュトークンを受け取るには、認証リクエストに
offline_access スコープを含めてください。プラットフォーム別のブラウザー設定
Android - Chrome Custom Tabs でカスタムカラーを使用する:AndroidBrowser.cs
iOSBrowser.cs
次のステップ
IDプロバイダーを設定する
Google、Facebook、GitHub などのソーシャルログインプロバイダーを追加します
MFA を有効にする
MFA によりセキュリティをさらに強化します
攻撃対策
ブルートフォース攻撃やボット攻撃を防ぐ方法を確認します
ログインエクスペリエンスをカスタマイズする
ブランドに合わせて Universal Login ページをカスタマイズします