2020 年 2 月の SameSite Cookie の変更: 知っておくべきこと
2020年2月7日金曜日
この記事は Chrome およびウェブ プラットフォーム パートナーシップ、Barb Smith による Chromium Blog の記事 "SameSite Cookie Changes in February 2020: What You Need to Know" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
今月の Chrome 80 安定版のリリースより、Chrome はデフォルトで安全な新しい Cookie 分類システムを強制するようになります。これにより、SameSite 値を宣言していない Cookie は SameSite=Lax の Cookie として扱われます。サードパーティ コンテキストで利用できるのは SameSite=None; Secure が設定されている Cookie のみになり、それも安全な接続が使われている場合に限られます。
この変更は、2019 年 5 月に初めて発表され、それに合わせてデベロッパー ガイドが公開されました。また、2019 年 10 月にリマインダーと追加情報をお知らせしました。ロールアウトが迫っているため、次の動画と情報を確認して今後の変更について認識し、対応していただくようお願いいたします。
リリースのタイミング: Chrome 80 の安定版リリースは、2 月 4 日から始まりました。Chrome 80 は、2 月中に一部のユーザーに対して新しい Cookie 分類システムを強制するようになり、対象は徐々に拡大されます。ロールアウトのタイミングや手順に関する最新情報は、SameSite 最新情報ページをご覧ください。 ブラウザがアップデートされたかどうかを確認するには、こちらのページにアクセスしてください。すべての列が緑色になっている場合、ブラウザに新しいデフォルトが適用されています。
デベロッパー ツールのコンソールの警告: 必要な設定が行われていないクロスサイト Cookie がページに含まれている場合、デベロッパー ツールのコンソールに警告が表示されます。自分のサイトを参照しているときにデベロッパー ツールに次のような警告が表示される場合、サイトの機能を実現している Cookie が適切に設定されていない可能性があります。次に、Chrome 80 のデベロッパー ツールの警告を示します。以前のバージョンの Chrome(77 以降)でも同様の警告が表示されます。
Google の Cookie: 一部の Google のサービスでは、上記のアプローチを採用し、新しい設定の Cookie と 以前の設定の Cookie を発行しています。そのため、Google のサービスは意図した通りに動作するにもかかわらず、Google の Cookie に関する警告がデベロッパー ツールのコンソールに表示される場合があります。
移行による一時的な影響: クロスサイト Cookie のプロバイダが Chrome 80 リリースの直前に Cookie をアップデートした場合、Chrome 80 を使っている既知のユーザーや復帰したユーザーが一時的に未知のユーザーや新しいユーザーに見える可能性があります。これは、ユーザーの Cookie が新しい設定に更新されると、元通りになります。それよりも前にあらかじめ Cookie を更新していたプロバイダは、ユーザーが新しい設定の Cookie を受け取れる時間が長くなるため、この影響を受けにくくなります。
ログインフローに関する一時的な対処法: 認証の過程でウェブサイトとサードパーティ プロバイダの間で Cookie が渡される場合、ユーザーのログイン操作に影響を与えないようにするため、Chrome には「Lax + POST」として知られている一時的な対処法が導入されています。これにより 2 分間、トップレベルのクロスサイト POST リクエストに SameSite 設定を指定していない Cookie を利用できます。トップレベルのクロスサイト POST リクエストは、ログインフローによく使われます(これにより、トップレベルのクロスサイト GET リクエストの動作が変更されることはありません。トップレベルのクロスサイト GET リクエストでは、SameSite が「Lax」の Cookie が送信されますが、「Strict」の Cookie は送信されません)。この対処法は、新しいモデルに関する Chromium トラッカーで説明されています。サードパーティ ログイン サービスを使用または提供している方には、ただちにログインフローをテストすることを強くおすすめします。
エンタープライズ ポリシー: ログインなどのサービスや社内アプリケーションが Chrome 80 の変更に対応できない場合、企業の管理者は特別なポリシーを実装し、Chrome ブラウザを一時的に以前の動きに戻す必要があるかもしれません。
テストとトラブルシューティング: 新しいモデルでサイトやサービスがどのように動作するかを確認するには、Chrome 76 以降で [SameSite by default cookies] および [Cookies without SameSite must be secure] 試験運用版フラグを有効にしてテストすることを強くおすすめします(フラグは、chrome://flags から有効にすることができます)。新しいモデルは Chrome 80 に徐々にロールアウトされるので、テストを行う場合は、Chrome 80 でフラグを有効にして新しいデフォルト設定がブラウザに確実に反映されるようにする必要があります。
また、Chrome 80 で想定しない動作が発生した場合、[SameSite by default cookies] および [Cookies without SameSite must be secure] フラグを無効にすることで、それが新しいモデルによるものかどうかを切り分けることができます。フラグを無効にしても問題が発生する場合は、問題の原因は Cookie の変更ではない可能性が高いでしょう。その他のテストやデバッグのヒントは、こちらに掲載されています。
その他のリソース:
Reviewed by Eiji Kitamura - Developer Relations Team
今月の Chrome 80 安定版のリリースより、Chrome はデフォルトで安全な新しい Cookie 分類システムを強制するようになります。これにより、SameSite 値を宣言していない Cookie は SameSite=Lax の Cookie として扱われます。サードパーティ コンテキストで利用できるのは SameSite=None; Secure が設定されている Cookie のみになり、それも安全な接続が使われている場合に限られます。
この変更は、2019 年 5 月に初めて発表され、それに合わせてデベロッパー ガイドが公開されました。また、2019 年 10 月にリマインダーと追加情報をお知らせしました。ロールアウトが迫っているため、次の動画と情報を確認して今後の変更について認識し、対応していただくようお願いいたします。
リリースのタイミング: Chrome 80 の安定版リリースは、2 月 4 日から始まりました。Chrome 80 は、2 月中に一部のユーザーに対して新しい Cookie 分類システムを強制するようになり、対象は徐々に拡大されます。ロールアウトのタイミングや手順に関する最新情報は、SameSite 最新情報ページをご覧ください。 ブラウザがアップデートされたかどうかを確認するには、こちらのページにアクセスしてください。すべての列が緑色になっている場合、ブラウザに新しいデフォルトが適用されています。
デベロッパー ツールのコンソールの警告: 必要な設定が行われていないクロスサイト Cookie がページに含まれている場合、デベロッパー ツールのコンソールに警告が表示されます。自分のサイトを参照しているときにデベロッパー ツールに次のような警告が表示される場合、サイトの機能を実現している Cookie が適切に設定されていない可能性があります。次に、Chrome 80 のデベロッパー ツールの警告を示します。以前のバージョンの Chrome(77 以降)でも同様の警告が表示されます。
例外となるのは、サービスが冗長な Cookie のペアを発行しており、一方の Cookie に新しい設定、もう一方の Cookie に互換性のないクライアント用の以前の設定が含まれている場合です。この場合、サービスが意図したとおりに動作するにもかかわらず、以前の Cookie によって警告が表示されることがあります。このアプローチについては、こちらに記載があります。
Google の Cookie: 一部の Google のサービスでは、上記のアプローチを採用し、新しい設定の Cookie と 以前の設定の Cookie を発行しています。そのため、Google のサービスは意図した通りに動作するにもかかわらず、Google の Cookie に関する警告がデベロッパー ツールのコンソールに表示される場合があります。
移行による一時的な影響: クロスサイト Cookie のプロバイダが Chrome 80 リリースの直前に Cookie をアップデートした場合、Chrome 80 を使っている既知のユーザーや復帰したユーザーが一時的に未知のユーザーや新しいユーザーに見える可能性があります。これは、ユーザーの Cookie が新しい設定に更新されると、元通りになります。それよりも前にあらかじめ Cookie を更新していたプロバイダは、ユーザーが新しい設定の Cookie を受け取れる時間が長くなるため、この影響を受けにくくなります。
ログインフローに関する一時的な対処法: 認証の過程でウェブサイトとサードパーティ プロバイダの間で Cookie が渡される場合、ユーザーのログイン操作に影響を与えないようにするため、Chrome には「Lax + POST」として知られている一時的な対処法が導入されています。これにより 2 分間、トップレベルのクロスサイト POST リクエストに SameSite 設定を指定していない Cookie を利用できます。トップレベルのクロスサイト POST リクエストは、ログインフローによく使われます(これにより、トップレベルのクロスサイト GET リクエストの動作が変更されることはありません。トップレベルのクロスサイト GET リクエストでは、SameSite が「Lax」の Cookie が送信されますが、「Strict」の Cookie は送信されません)。この対処法は、新しいモデルに関する Chromium トラッカーで説明されています。サードパーティ ログイン サービスを使用または提供している方には、ただちにログインフローをテストすることを強くおすすめします。
エンタープライズ ポリシー: ログインなどのサービスや社内アプリケーションが Chrome 80 の変更に対応できない場合、企業の管理者は特別なポリシーを実装し、Chrome ブラウザを一時的に以前の動きに戻す必要があるかもしれません。
テストとトラブルシューティング: 新しいモデルでサイトやサービスがどのように動作するかを確認するには、Chrome 76 以降で [SameSite by default cookies] および [Cookies without SameSite must be secure] 試験運用版フラグを有効にしてテストすることを強くおすすめします(フラグは、chrome://flags から有効にすることができます)。新しいモデルは Chrome 80 に徐々にロールアウトされるので、テストを行う場合は、Chrome 80 でフラグを有効にして新しいデフォルト設定がブラウザに確実に反映されるようにする必要があります。
また、Chrome 80 で想定しない動作が発生した場合、[SameSite by default cookies] および [Cookies without SameSite must be secure] フラグを無効にすることで、それが新しいモデルによるものかどうかを切り分けることができます。フラグを無効にしても問題が発生する場合は、問題の原因は Cookie の変更ではない可能性が高いでしょう。その他のテストやデバッグのヒントは、こちらに掲載されています。
その他のリソース:
- SameSite 最新情報
- SameSite に関するよくある質問(Lax + POST 対処法を含む)
- web.dev: SameSite Cookie の説明
- web.dev: SameSite Cookie レシピ
- テストとデバッグのヒント
- 互換性のない既知のクライアントと互換性のないクライアントへの対応
- 企業管理者向けのガイド
- 言語、ライブラリ、フレームワークのガイド
- AMP サイト運営者向けガイド
- Stack Overflow に質問を投稿
- Cookie の SameSite=Lax デフォルト化に関する Chromium トラッカー
- 安全でない SameSite=None Cookie の拒否に関する Chromium トラッカー
Reviewed by Eiji Kitamura - Developer Relations Team