ASP.NET Core C# プログラミング

【 ASP.NET Core 】CookieSecurePolicyの設定 実装方法

ASP.NET Core(.NET 6)でCookieSecurePolicyを設定する方法を解説します。

asp.net core

CookieSecurePolicyについて

CookieSecurePolicy は、Cookieをセキュアにするためのポリシーを設定するために使用されます。

セキュアなCookieは、HTTPSを使用して通信する場合にのみ送信され、HTTP通信の場合は送信されません。これにより、中間者攻撃や盗聴から保護されるため、セキュリティの工場に役立ちます。

基本的なCookieの名前であるName属性、Cookieの値であるValue属性など、様々な要素があります。
その中でも、Secureという属性によって、付与することでCookieはHTTPS通信でなければブラウザ、サーバ間で送信されなくなります。

CookieSecurePolicyのオプション

CookieSecurePolicy には3つオプションがあります。以下がその設定の詳細です。

オプション詳細
Always常にセキュアなクッキーを使用します。HTTPS通信の場合のみ送信されます。
SameAsRequest要求がHTTPSである場合にのみ、セキュアなクッキーを使用します。
None常に非セキュアなクッキーを使用します。HTTPおよびHTTPS通信の両方で送信されます。

セキュリティの観点から、Alwaysを使用することが推奨されます。
ただし、HTTPSが使用できない場合や開発環境でテストを実行する場合などは、Noneを使用することができます。

もし、クロスサイトでCookieを送信する場合、Cookie属性のSameSiteSecureの設定が必要でCookieはHTTPS通信でなければブラウザ、サーバ間で送信されなくなります。
その場合は、CookieSecurePolicyのオプションはAlwaysに設定する必要があります。
Cookie属性SameSite設定に関してはこちらを参照してください。

CookieSecurePolicyの実装方法

以下がCookieのCookieSecurePolicyを実装する方法です。

Program.csCookieによる認証スキームを追加した箇所のオプションとしてCookieSecurePolicyの設定を追加する必要があります。
Cookieの認証スキームやそれを使ったログイン認証機能の実装方法についてはこちらを参照してください。

// Cookie による認証スキーム
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
     // SameSiteMode:None の場合
        options.Cookie.SameSite = SameSiteMode.None;
        // CookieSecurePolicy:Always の場合
     options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    });

var app = builder.Build();

おすすめ記事はコチラ

スマレジ テックファーム 1

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム 」についてPRしていきたいと思います。 スマレジ ...

2

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。 FromBody 属性 POSTやGETで呼び出さ ...

PC picture 3

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS )とは何かについても少し解説したいと思 ...

-ASP.NET Core, C#, プログラミング
-, ,