UseCookieAuthentication の呼び出しで登録した Cookie ミドルウェアです。2つ目は、UseOpenIdConnectAuthentication の呼び出しで構成する OIDC ミドルウェアです。
ユーザーが OIDC ミドルウェアを使って Auth0 にサインインすると、その情報は自動的に に保存されます。必要なのは上記のようにミドルウェアを構成することだけで、ユーザーセッションの管理はミドルウェアが自動的に行います。
また、 Connect (OIDC) ミドルウェアは、ユーザーの認証後に Auth0 から送信される からすべてのクレームも取り出し、それらを ClaimsIdentity にクレームとして追加します。
ログアウトを実装する
AuthenticationManager クラスの SignOutAsync メソッドに、サインアウト対象の認証スキームを渡すことで、アプリケーションのセッションと Auth0 のセッションの両方を制御できます。
たとえば Cookie ミドルウェアからサインアウトして、アプリケーションの認証 Cookie を削除するには、次のように呼び出します。
SignOutAsyncメソッドを呼び出し、サインアウトする認証スキームとしてAuth0を渡すことで、Auth0 からユーザーをログアウトできます。
OnRedirectToIdentityProviderForSignOut イベントを処理する追加の設定も必要です。イベント内では、Auth0 の Cookie をクリアするために、Auth0 の logout エンドポイント にリダイレクトする必要があります。
管理者権限を実装する
[Authorize(Roles = "Admin")]属性を付与することで、特定の操作をAdminユーザーだけが利用できるように簡単に制限できます。コントローラー内でUser.IsInRole("Admin")を呼び出せば、ユーザーが特定のroleに属しているかどうかをコードから確認することもできます。
ASP.NET OIDCミドルウェアは、で返されたすべてのクレームを、自動的にClaimsIdentityにクレームとして追加します。したがって、authorizationクレームから情報を抽出し、そのクレームのJSON本体をデシリアライズして、各グループについてhttp://schemas.microsoft.com/ws/2008/06/identity/claims/roleクレームをClaimsIdentityに追加する必要があります。