ブラウザの仕様変更により、クロスドメインアクセスにおける Cookie の扱いに変更がありました。
Google Chrome では バージョン 80 以降、SameSite 属性が宣言されていない Cookie は SameSite=Lax として扱われるようになりました。
※Google Chrome の仕様変更については、以下 Google Developers をご参照ください。
他のブラウザも同様の仕様に変更されていく可能性があります。
この仕様変更でクロスドメインより遷移する場合、遷移先サイト(intra-mart Accel Platform)で作成した Cookie が遷移先サイトに渡されない事象が発生します。
これにより、クロスドメインからのアクセスでは、セッションが維持できなくなります。
この事象を回避するためには intra-mart Accel Platform で作成した Cookie の属性に SameSite=None; Secure を付与する必要があります。
(注意)
Cookie の属性に SameSite=None; Secure を付与する場合、intra-mart AccelPlatform へのアクセスは https である必要があります。
intra-mart Accel Platform で Session Cookie に SameSite 属性 を付与することは、Resin 4.0.64 以降であれば可能です。(Resin のセッションを利用する場合)
ただし、2022/02/09(現在) 、最新バージョン(2021 Winter)であっても、「セッション管理モジュール」を利用する場合には、セッション管理モジュールの設定で Session Cookie に SameSite 属性 を付与することはできません。
セッション管理モジュールを利用している場合には、Web サーバで SameSite 属性を付与する必要があります。そこで、本記事では Web サーバで Cookie に SameSite 属性を付与する方法について解説します。
Apache の場合
httpd.conf に以下の設定を追加します。
set-cookie される Cookie に SameSite 属性 が存在しない場合に、SameSite=None; Secure を付与します。
# Secure Cookie
Header edit Set-Cookie "^(?!.*(\s+|;)(?i)SameSite=)(.*)" "$0; SameSite=None; Secure"
SetEnv proxy-nokeepalive 1
・・・・
Web サーバを再起動してください。
IIS の場合
web.config に以下のコードを追加します。
set-cookie される Cookie に SameSite 属性 が存在しない場合に、SameSite=None; Secure を付与します。
<rewrite>
・・・・
<outboundRules>
・・・・
<rule name="AddSameSiteCookie">
<match serverVariable="RESPONSE_SET_COOKIE" pattern="^(?!.*(\s+|;)SameSite=)(.*)" ignoreCase="true" />
<action type="Rewrite" value="{R:0}; SameSite=None; Secure" />
</rule>
・・・・
</outboundRules>
</rewrite>
Web サーバを再起動してください。