AI を使って Auth0 を統合する
AI を使って Auth0 を統合する
Claude Code、Cursor、GitHub Copilot などの AI コーディング アシスタントを使用すると、agent skills を使って数分で Auth0 認証を自動追加できます。インストール:次に、AI アシスタントに次のように依頼します。AI アシスタントは、Auth0 アプリケーションの作成、認証情報の取得、Auth0 OidcClient SDK のインストール、コールバック URL の設定、ログイン/ログアウト フローの実装を自動的に行います。agent skills の完全なドキュメント →
前提条件: 開始する前に、次のものを用意してください。
- .NET 8.0 SDK 以降 (レガシー プロジェクトの場合は .NET Framework 4.6.2)
- Visual Studio 2022 または C# Dev Kit を備えた VS Code
はじめに
アプリケーションを作成する
すでに WPF または WinForms のプロジェクトがある場合は、この手順を飛ばして次に進んでください。
- .NET CLI
- Visual Studio
新しいプロジェクトを作成し、そのディレクトリを開きます。
- WPF
- WinForms
Auth0 を設定する
Auth0 サービスを利用するには、Auth0 Dashboard でアプリケーションを設定しておく必要があります。Auth0 のアプリケーションでは、プロジェクトでの認証の動作を設定します。
アプリケーションを設定する
Auth0 Dashboard → Applications → Applications に移動し、新しいアプリケーションを作成します。- Create Application をクリックします
- アプリケーションの名前を入力します
- アプリケーションタイプとして Native を選択します
- Create をクリックします
コールバックURLを設定する
コールバックURLは、ユーザーの認証後に Auth0 がリダイレクトするアプリケーション内の URL です。これが設定されていないと、ユーザーはログイン後にアプリケーションへ戻れません。Application Settings で、次の値を Allowed Callback URLs に追加します。ログアウト URL を設定する
ログアウト URL とは、ユーザーのログアウト後に Auth0 がリダイレクトするアプリケーション内の URL です。これが設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーが表示されます。Application Settings の Allowed Logout URLs に、次を追加します。Auth0 SDK をインストールする
Auth0 では、WPF 用と WinForms 用に別々の NuGet パッケージを提供しています。プロジェクトの種類に応じたものをインストールしてください。
- NuGet パッケージ マネージャー
- .NET CLI
Package Manager Console ([ツール] → [NuGet パッケージ マネージャー] → [Package Manager Console]) を開き、次を実行します。
Auth0Clientをインスタンス化する
アプリケーションに Auth0 を統合するには、Auth0 の ドメイン と クライアントID を指定して
Auth0Client をインスタンス化します。プライベート フィールドを追加し、メイン ウィンドウまたはフォームの既存のコンストラクター内で初期化してください。- WPF
- WinForms
MainWindow.xaml.cs を開き、次のように更新します。MainWindow.xaml.cs
アプリケーションにログインを追加する
ユーザーをログインさせるには、SDK の 次に、エラーがなければ、結果の
LoginAsync() メソッドを使用します。このメソッドを呼び出すと、Auth0 Universal Login ページを表示するポップアップウィンドウが開きます。認証が成功すると、Auth0 はコールバック URL にリダイレクトし、SDK は LoginResult を返します。まず、UI にログインボタンを追加します。- WPF
- WinForms
MainWindow.xaml を開き、<Grid> 内に Button を追加します。MainWindow.xaml
MainWindow.xaml.cs にクリック ハンドラーを追加します。MainWindow.xaml.cs
LoginResult.User、LoginResult.IdentityToken、LoginResult.AccessToken、LoginResult.RefreshToken にアクセスできます。アプリケーションにログアウト機能を追加する
ユーザーをログアウトするには、SDK の 次に、
LogoutAsync() メソッドを使用します。これによりポップアップ ウィンドウが開き、セッションをクリアするために Auth0 のログアウト エンドポイントへリダイレクトされた後、設定したログアウト URL にリダイレクトされます。まず、UI にログアウト ボタンを追加します。- WPF
- WinForms
MainWindow.xaml を開き、ログイン ボタンの横にログアウト Button を追加します。MainWindow.xaml
MainWindow.xaml.cs にクリック ハンドラーを追加します。MainWindow.xaml.cs
ユーザーのプロフィール情報を表示する
LoginResult.User プロパティは、認証されたユーザーのプロフィールを含む ClaimsPrincipal です。アプリケーションにユーザー情報を表示するには、クレームを参照してください。チェックポイントこれで、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 のポップアップウィンドウが開いてログインページは表示されますが、認証情報を入力しても何も起こりません。解決策: Microsoft Edge WebView2 Runtime がマシンにインストールされていません。Microsoft WebView2 のダウンロードページ からインストールしてください。WebView2 は Windows 11 と最近の Windows 10 ビルドには含まれていますが、古いシステムでは別途インストールする必要があります。
コールバック URL の不一致エラー
コールバック URL の不一致エラー
問題: ログイン後、Auth0 から
callback URL mismatch エラーが返されます。解決策: SDK が使用するリダイレクト URI が、Auth0 Dashboard の Allowed Callback URLs に設定されているいずれの値とも一致していません。Application Settings の Allowed Callback URLs に https://{yourDomain}/mobile を追加してください。SDK はデフォルトでこの URL を使用します。ログアウト URL の不一致エラー
ログアウト URL の不一致エラー
問題: ログアウト後、未登録のログアウト URL に関するエラーが Auth0 から返されます。解決策: Application Settings の Allowed Logout URLs に
https://{yourDomain}/mobile を追加してください。ログイン後に LoginResult.IsError が true になる
ログイン後に LoginResult.IsError が true になる
問題: よくある原因:
LoginResult.IsError が true ですが、原因を示す明確な情報がありません。解決策: 詳細は LoginResult.Error と LoginResult.ErrorDescription を確認してください。- Auth0 Dashboard のアプリケーションタイプが Native に設定されていない
- Advanced Settings → OAuth で OIDC Conformant が有効になっていない
- JSON Web Token Signature Algorithm が RS256 に設定されていない
ログイン後に RefreshToken が null になる
ログイン後に RefreshToken が null になる
問題: また、Auth0 Dashboard の Application Settings で Refresh Token Rotation が有効になっていることも確認してください。
LoginResult.RefreshToken が null です。解決策: リフレッシュトークンを受け取るには offline_access スコープが必要です。これを Scope オプションに追加してください。