Skip to main content

AI を使って Auth0 を統合する

Claude Code、Cursor、GitHub Copilot などの AI コーディングアシスタントを使用している場合は、agent skills を使って数分で Auth0 の認証を自動的に追加できます。インストール:
次に、AI アシスタントに次のように依頼します。
AI アシスタントは、Auth0 アプリケーションの作成、資格情報の取得、Auth0 OidcClient SDK のインストール、コールバックURL の設定、ログイン/ログアウト フローの実装を自動的に行います。agent skills の完全なドキュメント →
前提条件: 開始する前に、次のものを用意してください。.NET バージョンの互換性: この Quickstart は .NET 8.0、.NET 9.0、および .NET Framework 4.6.2 に対応しています。

はじめに

このクイックスタートでは、WPF または WinForms のデスクトップアプリケーションに Auth0 の authentication を追加する方法を紹介します。Auth0 を設定し、SDK をインストールして、WPF および WinForms 用の Auth0 OIDC Client を使用し、ログイン、ログアウト、ユーザープロファイルの表示を追加します。
1

アプリケーションを作成する

すでに WPF または WinForms のプロジェクトがある場合は、次のステップに進んでください。
新しいプロジェクトを作成し、そのディレクトリを開きます。
2

Auth0 を設定する

Auth0 のサービスを利用するには、Auth0 Dashboard でアプリケーションを設定しておく必要があります。Auth0 アプリケーションでは、プロジェクトで認証をどのように行うかを設定します。

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

Auth0 Dashboard → Applications → Applications に移動し、新しいアプリケーションを作成します。
  1. Create Application をクリックします
  2. アプリケーションの名前を入力します
  3. アプリケーションの種類として Native を選択します
  4. Create をクリックします
Settings タブで、Domain と Client ID を控えておきます。SDK を初期化する際に必要になります。

Callback URL を設定する

callback URL は、ユーザーの認証後に Auth0 がリダイレクトする、アプリケーション内の URL です。これが設定されていないと、ユーザーはログイン後にアプリケーションへ戻れません。Application Settings で、次の内容を Allowed Callback URLs に追加します。

ログアウト URL を設定する

ログアウト URL とは、ユーザーのログアウト後に Auth0 がリダイレクトするアプリケーション内の URL のことです。これが設定されていないと、ユーザーはアプリケーションからログアウトできず、エラーが表示されます。Application Settings で、Allowed Logout URLs に次を追加します。
3

Auth0 SDK をインストールする

Auth0 では、WPF 用と WinForms 用にそれぞれ別の NuGet パッケージを提供しています。プロジェクトの種類に合ったものをインストールしてください。
Package Manager Console (Tools → NuGet Package Manager → Package Manager Console) を開き、次を実行します。
4

Auth0Client を作成する

Auth0 をアプリケーションに統合するには、Auth0 の Domain と Client ID を指定して Auth0Client をインスタンス化します。プライベート フィールドを追加し、メイン ウィンドウまたはフォームの既存のコンストラクター内で初期化します。
MainWindow.xaml.cs を開き、次のように更新します。
MainWindow.xaml.cs
5

アプリケーションにログイン機能を追加する

ユーザーをログインさせるには、SDK の LoginAsync() メソッドを使用します。このメソッドを呼び出すと、Auth0 Universal Login ページを表示するポップアップウィンドウが開きます。認証に成功すると、Auth0 はコールバック URL にリダイレクトし、SDK は LoginResult を返します。まず、UI にログインボタンを追加します。
MainWindow.xaml を開き、<Grid> 内に Button を追加します。
MainWindow.xaml
次に、MainWindow.xaml.cs にクリック ハンドラーを追加します。
MainWindow.xaml.cs
エラーがなければ、結果の LoginResult.User、LoginResult.IdentityToken、LoginResult.AccessToken、LoginResult.RefreshToken にアクセスできます。
6

アプリケーションにlogoutを追加する

ユーザーをログアウトするには、SDK の LogoutAsync() メソッドを使用します。これによりポップアップウィンドウが開き、セッションをクリアするために Auth0 の logout エンドポイントへリダイレクトされた後、設定したログアウト URL に戻ります。まず、UI にログアウトボタンを追加します。
MainWindow.xaml を開き、ログインボタンの横にログアウト用の Button を追加します。
MainWindow.xaml
次に、MainWindow.xaml.cs にクリック ハンドラーを追加します。
MainWindow.xaml.cs
7

ユーザープロファイル情報を表示する

LoginResult.User プロパティは、認証されたユーザーのプロファイルを含む ClaimsPrincipal です。claim を参照して、アプリケーションにユーザー情報を表示します。
ID トークンに含まれるすべてのクレームを確認するには:
チェックポイントこれで、Auth0 を統合した WPF または WinForms アプリケーションが正しく動作するはずです。アプリケーションを実行し、次の点を確認してください。
  • ログインボタンをクリックすると、Auth0 Universal Login ページがポップアップウィンドウで開くこと。
  • ログインまたはサインアップできること。
  • 認証後に、LoginResult.User からユーザー情報にアクセスできること。
  • ログアウトボタンをクリックすると、セッションがクリアされ、ログアウト URL にリダイレクトされること。

高度な使い方

トークンやユーザーのプロパティにアクセスする前に、LoginResult.IsError を確認してください。認証に失敗した場合は、Error プロパティと ErrorDescription プロパティに詳細が含まれます。
ユーザーが認証を完了せずにログイン用のポップアップを閉じた場合、LoginAsync() は BrowserResultType.UserCancel を含む結果を返します。これは想定された動作であり、エラーとして扱わないでください。
ユーザーに再度ログインしてもらうことなく新しいアクセストークンを取得するには、最初の LoginResult で取得したリフレッシュトークンを使って RefreshTokenAsync() を呼び出します。
リフレッシュトークンを使用するには offline_access スコープが必要です。また、Auth0 の Application Settings で Refresh Token Rotation を有効にしておく必要があります。

追加リソース

SDK リポジトリ

Auth0 OIDC Client for .NET のソースコード、リリースノート、Issue トラッカー

ユーザープロファイル

ユーザープロファイルのクレームと /userinfo エンドポイントについて確認できます

コミュニティフォーラム

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

よくある問題

問題: WebView2 のポップアップウィンドウが開いてログインページは表示されますが、credentials を入力しても何も起こりません。解決策: Microsoft Edge WebView2 Runtime がマシンにインストールされていません。Microsoft WebView2 download page からインストールしてください。WebView2 は Windows 11 と新しい Windows 10 ビルドには同梱されていますが、古いシステムでは別途インストールが必要です。
問題: ログイン後、Auth0 から callback URL mismatch エラーが返されます。解決策: SDK が使用する Redirect URI が、Auth0 Dashboard の Allowed Callback URLs に設定されているどの値とも一致していません。Application Settings の Allowed Callback URLs に https://{yourDomain}/mobile を追加してください。SDK はデフォルトでこの URL を使用します。
問題: ログアウト後、Auth0 から認識されない ログアウト URL に関するエラーが返されます。解決策: Application Settings の Allowed Logout URLs に https://{yourDomain}/mobile を追加してください。
問題: LoginResult.IsError が true になっていますが、原因がはっきり分かりません。解決策: 詳細は LoginResult.Error と LoginResult.ErrorDescription を確認してください。
よくある原因:
  • Auth0 Dashboard でアプリケーション種別が Native に設定されていない
  • Advanced Settings → OAuth で OIDC Conformant が有効になっていない
  • JSON Web Token Signature Algorithm が RS256 に設定されていない
問題: LoginResult.RefreshToken が null です。解決策: リフレッシュトークンを受け取るには offline_access スコープ が必要です。これを Scope オプションに追加してください。
また、Auth0 Dashboard の Application Settings で Refresh Token Rotation が有効になっていることも確認してください。