メインコンテンツへスキップ

AI を使用して Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使うことで、数分で Auth0 認証を自動的に追加できます。インストール:
次に、AI アシスタントに次のように依頼します。
AI アシスタントが、Auth0 アプリケーションの作成、認証情報の取得、Auth0 OidcClient MAUI SDK のインストール、コールバック URL の設定、ログイン / ログアウトフローの実装を自動的に行います。agent skills の完全なドキュメント →
このガイドでは、Auth0.OidcClient.MAUI SDK を使用して .NET MAUI アプリケーションに Auth0 を統合する方法を説明します。完了する頃には、単一のコードベースで AndroidiOSmacOSWindows において、ログイン、ログアウト、ユーザープロファイル情報の表示をサポートできるようになります。 このガイドでは、Auth0.OidcClient.MAUI バージョン 1.x を使用します。

前提条件

  • .NET 8 または .NET 9 SDK がインストールされていること (ダウンロード)
  • MAUI ワークロード がインストールされていること
  • Auth0 アカウント を持っていること (無料でサインアップ)
  • Visual Studio 2022 (17.8 以降) 、JetBrains Rider、または .NET MAUI 拡張機能を備えた VS Code
環境を確認します。
MAUI ワークロードが見つからない場合は、インストールします。

はじめに

1

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

MAUI アプリに必要な認証情報を取得できるよう、Auth0 アプリケーションを設定します。
  1. Auth0 Dashboard > Applications > Applications に移動します
  2. Create Application を選択します
  3. アプリの名前 (例: “My MAUI App”) を入力し、アプリケーションの種類として Native を選択して、Create をクリックします
  4. Application Details ページの Settings タブに移動します
  5. ドメインクライアントID の値を控えておきます。これらは後で使用します
Settings タブで Application URIs までスクロールし、次の URL を設定します。.NET MAUI アプリでは、HTTP URL ではなくカスタム URI スキーム (例: myapp://callback) を使用します。Allowed Callback URLs:
許可されたログアウトURL:
アプリ固有のスキームを選択します。たとえば、com.mycompany.myapp://callback のような逆順ドメイン名が適しています。
変更を保存 を選択します。
Auth0 に Native アプリケーションがあり、ドメインクライアントID を控えており、コールバック URL とログアウト URL が設定されていることを確認します。
2

MAUI プロジェクトを作成する

すでに .NET MAUI プロジェクトがある場合は、ステップ 3 に進んでください。ない場合は、.NET CLI を使用して作成してください。
3

Auth0 MAUI SDKをインストールする

Auth0.OidcClient.MAUI NuGet パッケージをプロジェクトに追加します。
パッケージがエラーなくインストールされたことを確認するために、dotnet restore を実行します。
4

プラットフォーム別のコールバック処理を設定する

.NET MAUI アプリでは、認証後にシステム ブラウザーからアプリにリダイレクトできるよう、各プラットフォームでコールバック ハンドラーを登録する必要があります。対象とする各プラットフォームの手順に従ってください。
Platforms/Android/WebAuthenticatorActivity.cs に新しいファイルを作成します。
Platforms/Android/WebAuthenticatorActivity.cs
myapp は、手順 1 で設定した URI スキームに置き換えてください。
CALLBACK_SCHEME の値は、RedirectUri のスキーム、および Auth0 の Allowed Callback URLs と完全に一致している必要があります。
5

ログインとログアウトを追加する

ログイン/ログアウトのロジックを含む ViewModel、UI 用の XAML ページ、それらを関連付けるコードビハインド ファイルの 3 つのファイルを作成または変更する必要があります。
ViewModels/MainPageViewModel.cs に ViewModel を作成します。
ViewModels/MainPageViewModel.cs
これで、プロジェクトにはログイン コマンドとログアウト コマンドを持つ ViewModel、データ バインディングされた XAML ページ、それらを接続するコードビハインドがそろいました。
6

サービスを登録して、Auth0 クライアントをインスタンス化する

次に、MauiProgram.cs で依存性注入を使用して Auth0Client、ViewModel、ページを登録します。これにより各要素が連携され、Auth0 クライアントが ViewModel に、ViewModel がページに注入されます。
MauiProgram.cs
{yourDomain}{yourClientId} は、Auth0 のアプリケーション設定 (ステップ 1) の値に置き換えてください。 RedirectUriPostLogoutRedirectUri は MAUI アプリでは必須です。Auth0 Dashboard で入力したものと同じコールバック URL を使用してください。
7

アプリを起動する

.NET MAUI アプリケーションをビルドして実行する想定されるフロー:
  1. アプリが起動し、ログイン ボタンが表示されます
  2. ログイン をタップすると、Auth0 Universal Login がシステム ブラウザーで開きます
  3. 認証を完了します (サインアップまたはログイン)
  4. ブラウザーからアプリにリダイレクトされます
  5. アプリに名前とメールアドレス、および ログアウト ボタンが表示されます
これで、.NET MAUI アプリケーションで Auth0 のログイン機能が完全に動作するようになりました。

トラブルシューティング

症状: ブラウザーに「Callback URL mismatch. The provided redirect_uri is not in the list of allowed callback URLs.」と表示されます。修正方法:
  1. コード内の Client ID が、Auth0 Dashboard で設定したアプリケーションのものと一致していることを確認します
  2. Allowed Callback URLs フィールドをクリアし、myapp://callback を手動で入力し直します。コピー&ペーストすると、末尾に見えない空白や改行が入り込むことがあります
  3. 完全に一致していることを確認します。末尾のスラッシュなし、英小文字のみ、空白なしです
  4. Dashboard で Save Changes を選択し、値が保存されていることを確認します
  5. ブラウザーのアドレスバーで redirect_uri クエリパラメーターを確認し、アプリが実際に何を送信しているかを確認します
症状: ログインのためにブラウザーは開きますが、アプリにリダイレクトされません。修正方法:
  1. WebAuthenticatorActivity.csDataSchemeRedirectUri のスキームと一致していることを確認します
  2. Activity に Exported = true が設定されていることを確認します
  3. Auth0 Dashboard の Allowed Callback URLs が完全に一致していることを確認します
症状: ブラウザーは開きますが、元のアプリに戻る代わりにアプリの2つ目のインスタンスが起動します。修正方法: Auth0.OidcClient.Platforms.Windows.Activator.Default.CheckRedirectionActivation() が、Platforms/Windows/App.xaml.csApp コンストラクター内で 必ず最初の行 として呼び出されていること、および Package.appxmanifest のプロトコル名がコールバック URI のスキームと一致していることを確認してください。
症状: ログイン後、ブラウザーにエラーが表示されるか何も起こらず、アプリがコールバックを受信しません。修正方法: アプリは パッケージ化された (MSIX) アプリケーションである必要があります。.csproj ファイルに <WindowsPackageType> 要素があるか確認してください。
  • None に設定されている場合、プロトコルのアクティブ化は利用できません。その行を削除するか、<WindowsPackageType>MSIX</WindowsPackageType> に変更してください。
  • 要素が存在しない場合、アプリは既定でパッケージ化されています。Package.appxmanifest にステップ 4 の <uap:Protocol> 拡張機能が含まれていることを確認してください。
症状: nameemail、または picture クレームが loginResult.User に含まれていません。修正方法: openid profile emailAuth0ClientOptions.Scope に含まれていることを確認してください。スコープをカスタマイズしている場合は、openid が常に含まれていることを確認してください。

次のステップ

これで、.NET MAUI アプリで動作する Auth0 統合が完成しました。実装をさらに拡張するには、次のトピックを確認してください。
Auth0 MAUI SDK は、ユーザーに再度プロンプトを表示することなくセッションをサイレントに更新するためのリフレッシュトークンをサポートしています。

リフレッシュトークンを有効にする

Scope プロパティに offline_access を追加します。

リフレッシュトークンを使用する

ログイン後にリフレッシュトークンを保存し、それを使ってセッションをサイレントに更新します。
ログイン後に RefreshTokennull の場合は、Auth0 Dashboard の API 設定で Allow Offline Access が有効になっていることを確認してください (audience パラメーターを使用している場合) 。
API 用にスコープ設定されたアクセストークンを取得するには、Scope を設定し、LoginAsync()audience パラメーターを渡します。
特定の Auth0 組織内でユーザーを認証します。
詳細については、組織 を参照してください。
MaxAge を使用すると、指定した時間の経過後に再認証を強制できます。
色、ロゴ、テキストなどを含め、Auth0 のログインページをブランドに合わせて調整できます。詳細については、Customize Universal Login を参照してください。

追加リソース

SDK リポジトリ

ソースコード、サンプル、API リファレンス

トークンのベストプラクティス

トークンのセキュリティに関するベストプラクティス

PKCE フロー

ネイティブアプリで安全に認証する方法

コミュニティフォーラム

Auth0 コミュニティでサポートを受ける