Logtoを利用したASP.NET Core認証を構築する
Logto SDKを統合してASP.NET Coreでユーザー認証フローを構築する方法を学びましょう。
Logto SDKを統合してASP.NET Coreでユーザー認証フローを構築する方法を学びましょう。
このチュートリアルでは、Logto SDKを統合してASP.NET Coreでユーザー認証フローを構築する方法を紹介します。チュートリアルではC#をプログラミング言語として使用します。
開始する前に、以下のものが必要です:
開始するには、「伝統的なウェブ」タイプでLogtoアプリケーションを作成します。Logtoアプリケーションを作成するには、以下の手順に従ってください:
その後、ASP.NET CoreアプリケーションにLogto SDKを統合するプロセスを案内するインタラクティブなチュートリアルが表示されるはずです。以下の内容は将来の参照のためのものとなります。
ASP.NET Coreの最小サポートバージョンは6.0であることに注意してください。
Startup.cs(またはProgram.cs)を開き、Logto認証ミドルウェアを登録するための以下のコードを追加します:
AddLogtoAuthenticationメソッドは以下のことを行います:
LogtoDefaults.CookieSchemeに設定します。LogtoDefaults.AuthenticationSchemeに設定します。LogtoDefaults.AuthenticationSchemeに設定します。Logtoアプリケーション詳細ページのRedirect URIsリストに以下のURIを追加します:
Logtoでサインインするには、ChallengeAsyncメソッドを使うことができます:
ChallengeAsyncメソッドはユーザーをLogtoのサインインページにリダイレクトします。
RedirectUriプロパティは、認証後にユーザーをWebアプリケーションにリダイレクトするために使用されます。これはLogtoアプリケーション詳細ページで設定したリダイレクトURIとは異なることに注意してください:
RedirectUriプロパティは、Logto認証ミドルウェアで必要なアクションが取られた後にリダイレクトされるURIです。アクションの順序は1 -> 2です。明確さのために、Logtoアプリケーション詳細ページのリダイレクトURIをLogtoリダイレクトURI、RedirectUriプロパティをアプリケーションリダイレクトURIと呼びましょう。
LogtoリダイレクトURIはデフォルトで/Callbackとなっており、特別な要件がなければそのままにしておくことができます。それを変更したい場合は、LogtoOptionsのCallbackPathプロパティを設定します:
Logtoアプリケーション詳細ページの値を適宜更新するようにしてください。
Logtoアプリケーション詳細ページのPost sign-out redirect URIsリストに以下のURIを追加します:
Logtoでサインアウトするには、SignOutAsyncメソッドを使用できます:
SignOutAsyncメソッドは認証クッキーをクリアし、ユーザーをLogtoのサインアウトページにリダイレクトします。
RedirectUriプロパティは、サインアウト後にユーザーをWebアプリケーションにリダイレクトするために使用されます。これはLogtoアプリケーション詳細ページで設定したサインアウト後のリダイレクトURIと異なることに注意してください:
RedirectUriプロパティは、Logto認証ミドルウェアで必要なアクションが取られた後にリダイレクトされるURIです。アクションの順序は1 -> 2です。明確さのために、Logtoアプリケーション詳細ページのサインアウト後のリダイレクトURIをLogtoサインアウト後のリダイレクトURI、RedirectUriプロパティをアプリケーションサインアウト後のリダイレクトURIと呼びましょう。
Logtoサインアウト後のリダイレクトURIはデフォルトで/SignedOutCallbackとなっており、特別な要件がなければそのままにしておくことができます。それを変更したい場合は、LogtoOptionsのSignedOutCallbackPathプロパティを設定します:
Logtoアプリケーション詳細ページの値を適宜更新してください。
まず、PageModelにハンドラメソッドを追加します。例えば:
次に、Razorページ(html)にボタンを追加します:
<p>Is authenticated: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true)
{
<button type="submit" asp-page-handler="SignOut">Sign out</button>
} else {
<button type="submit" asp-page-handler="SignIn">Sign in</button>
}
</form>
これにより、ユーザーが認証されていない場合は"Sign in"ボタンが表示され、ユーザーが認証されている場合は"Sign out"ボタンが表示されます。
次に、Webアプリケーションを実行し、Logtoでサインイン/サインアウトを試してみましょう:
統合中に問題が発生した場合は、お気軽に[email protected]までメールでお問い合わせいただくか、Discordサーバーに参加してください!