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
はじめに
1
アプリケーションを作成する
すでに WPF または WinForms のプロジェクトがある場合は、次のステップに進んでください。
- .NET CLI
- Visual Studio
新しいプロジェクトを作成し、そのディレクトリを開きます。
- WPF
- WinForms
2
Auth0 を設定する
Auth0 のサービスを利用するには、Auth0 Dashboard でアプリケーションを設定しておく必要があります。Auth0 アプリケーションでは、プロジェクトで認証をどのように行うかを設定します。
アプリケーションを設定する
Auth0 Dashboard → Applications → Applications に移動し、新しいアプリケーションを作成します。- Create Application をクリックします
- アプリケーションの名前を入力します
- アプリケーションの種類として Native を選択します
- Create をクリックします
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 パッケージを提供しています。プロジェクトの種類に合ったものをインストールしてください。
- NuGet パッケージ マネージャー
- .NET CLI
Package Manager Console (Tools → NuGet Package Manager → Package Manager Console) を開き、次を実行します。
4
Auth0Client を作成する
Auth0 をアプリケーションに統合するには、Auth0 の Domain と Client ID を指定して
Auth0Client をインスタンス化します。プライベート フィールドを追加し、メイン ウィンドウまたはフォームの既存のコンストラクター内で初期化します。- WPF
- WinForms
MainWindow.xaml.cs を開き、次のように更新します。MainWindow.xaml.cs
5
アプリケーションにログイン機能を追加する
ユーザーをログインさせるには、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 にアクセスできます。6
アプリケーションにlogoutを追加する
ユーザーをログアウトするには、SDK の 次に、
LogoutAsync() メソッドを使用します。これによりポップアップウィンドウが開き、セッションをクリアするために Auth0 の logout エンドポイントへリダイレクトされた後、設定したログアウト URL に戻ります。まず、UI にログアウトボタンを追加します。- WPF
- WinForms
MainWindow.xaml を開き、ログインボタンの横にログアウト用の Button を追加します。MainWindow.xaml
MainWindow.xaml.cs にクリック ハンドラーを追加します。MainWindow.xaml.cs
7
ユーザープロファイル情報を表示する
LoginResult.User プロパティは、認証されたユーザーのプロファイルを含む ClaimsPrincipal です。claim を参照して、アプリケーションにユーザー情報を表示します。チェックポイントこれで、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 ビルドには同梱されていますが、古いシステムでは別途インストールが必要です。
コールバック URL の不一致エラー
コールバック URL の不一致エラー
問題: ログイン後、Auth0 から
callback URL mismatch エラーが返されます。解決策: SDK が使用する Redirect URI が、Auth0 Dashboard の Allowed Callback URLs に設定されているどの値とも一致していません。Application Settings の Allowed Callback URLs に https://{yourDomain}/mobile を追加してください。SDK はデフォルトでこの URL を使用します。ログアウト URL の不一致エラー
ログアウト URL の不一致エラー
問題: ログアウト後、Auth0 から認識されない ログアウト URL に関するエラーが返されます。解決策: 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 オプションに追加してください。