コンフィギュレーション
Startup.ConfigureServices法では、アイデンティティーを作成して検証ミドルウェアサービスのAddAuthenticationとAddCookie方法があります。
services.AddAuthentication(Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(オプション => { // クッキー設定 options.Cookie.HttpOnly = 真; options.ExpireTimeSpan = TimeSpan.FromMinutes(20 ); options.LoginPath = " /アカウント/ログイン" ; options.AccessDeniedPath = " /アカウント/アクセス拒否" ; options.SlidingExpiration = 真; });
AuthenticationSchemeは、アプリケーションの認証スキームAddAuthenticationのデフォルト設定に渡されます。そこに複数のインスタンスの認証Cookieであり、あなたは承認のために特定のプログラムを使用したい場合は、AuthenticationSchemeは有用であろう。CookieAuthenticationDefaultsにAuthenticationScheme。AuthenticationSchemeは、プログラムの値「クッキー」を提供します。任意の文字列値は、特徴的なスキームのために提供することができます。
認証スキームを適用クッキー認証方式は、アプリケーションとは異なります。AddCookieの身元認証方式へのクッキーは、CookieAuthenticationDefaults.AuthenticationScheme(「クッキー」)を使用しない場合。
デフォルトでは、認証Cookie IsEssentialプロパティがtrueに設定されています。サイト訪問者は、認証Cookieの使用を可能にする、データ収集に同意しない場合。
Startup.Configureでは、コールUseAuthenticationとUseAuthorizationはHttpContext.User属性、および実行する権限ミドルウェア要求を設定します。UseAuthenticationとUseAuthorizationメソッドの前に呼び出しUseEndpointsを呼び出します。
app.UseCookiePolicy();
app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(エンドポイント => { endpoints.MapControllers(); endpoints.MapRazorPages(); });
ログイン
ユーザー情報を保存するためにクッキーを作成するには、ClaimsPrincipalを構築します。ユーザー情報をシリアライズし、クッキーに保存されます。
クレームは、任意の所望のClaimsIdentityを使用して作成し、ユーザーをログに記録するSignInAsyncを呼び出します。
VaRのクレーム= 新しいリスト<項> { 新しい項(ClaimTypes.Name、user.Email)、 新たなクレーム(" フルネーム" 、user.FullName)、 新たな請求項(ClaimTypes.Role、" 管理者" ) }。 VaRの claimsIdentity = 新しいClaimsIdentity( クレーム、CookieAuthenticationDefaults.AuthenticationScheme)。 VaRの authProperties = 新しいAuthenticationProperties { // AllowRefresh = <ブール>、 // 認証セッションの更新を許可する必要があります。 //ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(10)、 // 認証チケットの有効期限が切れる時刻です。A // 値セットは、ここでのExpireTimeSpanオプションより優先されます // AddCookieで設定CookieAuthenticationOptionsを。 // IsPersistent =真、 // するかどうかの認証セッションを越えて永続化される // 複数の要求。クッキー、コントロールで使用する場合 // (マッチングクッキーの有効期間は、絶対的であるかどうか 、// または認証チケットの有効期間)セッションをベース。 // IssuedUtc = <のDateTimeOffset>、 // 認証チケットが発行された時刻。 //RedirectUri = <ストリング> // HTTPとして使用する完全なパスまたは絶対URI // リダイレクト応答値。 }。 await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme、 新しいClaimsPrincipal(claimsIdentity)、 authProperties)。
SignInAsyncは暗号化されたCookieを作成し、現在の応答に追加します。AuthenticationSchemeが指定されていない場合は、デフォルトのスキーム。
暗号化のためのASP.NETのコアデータ保護システム。アプリケーションまたはWebファームの負荷分散にまたがる複数のコンピュータアプリケーションでホストされているために、データ保護セットは、同一のアプリケーション識別子とキーリングを使用するように設定されています。
ログアウト
現在のユーザーをログオフし、自分のCookieを削除するには、SignOutAsyncを呼び出してください。
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme)。
CookieAuthenticationDefaults.AuthenticationScheme(または「クッキー」)が解決策(例えば、「ContosoCookie」)として使用されていない場合は、プロバイダが使用するコンフィギュレーションの認証スキームを提供してください。そうでない場合は、デフォルトのプログラム。