web-dev-qa-db-ja.com

AspNet Core Identity、options.Cookie.SameSiteをどのように設定しますか?

最新のテンプレートとライブラリではhttpsonlyフラグが使用されています。どうすればオフにできますか?

この同じ質問は時代遅れであり、完全な設定サンプルがありませんでした:

AspNet Core Identity-Cookieが本番環境で設定されない

10
FreeVice

Identityを使用するときにアプリケーションCookieを構成するには、スタートアップのConfigureApplicationCookie内で ConfigureServices method を使用できます。

_// add identity
services.AddIdentity<ApplicationUser, IdentityRole>();

// configure the application cookie
services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SameSite = SameSiteMode.None;
});
_

Identityは基本的に内部でCookie認証を追加するため、これは構成アクションであり、Cookie認証の構成時にAddCookie()に通常渡すアクションと同じです。 AddIdentity()が認証を設定するので、ConfigureApplicationCookieはCookie認証オプションを後で調整する方法を提供するだけです。

12
poke

@pokeによる回答は、値をSameSiteMode.Noneに設定するのに役立ちませんでした。少なくともASP.NETコア2.1にはありません。

アプリケーションCookieの構成で設定した値は、 CookieポリシーミドルウェアMinimumSameSitePolicy設定によって上書きされます。

これにより上書きが防止され、MinimumSameSitePolicy拡張機能のUseCookiePolicySameSiteMode.Noneとして設定します。

app.UseCookiePolicy(new CookiePolicyOptions
{
   MinimumSameSitePolicy = SameSiteMode.None
});

次に、ConfigureServicesメソッドのAddCookie拡張に実際の同じサイト値を設定します

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
    options => options.Cookie.SameSite = SameSiteMode.None;
});
11
Parag