課題
更新しました(2021年5月31日)。この動作は、Chrome 84以降、デフォルトで 有効 となっています。
更新しました(2020年4月3日)。 Chrome is Temporarily rolling back SameSite Cookie Changes
更新しました(2020年6月12日)。SAML 2.0 コネクタの修正バージョンに関する情報を追加しました。
https://www.chromium.org/updates/same-site に従った現在のロールアウト計画は以下の通りです。
2020年2月4日: Chrome 80 Stableがリリースされました。 SameSite-by-defaultおよびSameSite=None-requires-Secureを有効にする機能は、今回のChrome 80安定版の初期リリースには含まれていません。 Chrome 80安定版でSameSiteのエンフォースメントがいつ有効になるかの詳細は、次の項目をご覧ください。
2020年2月: Chrome 80 安定版へのエンフォースメントのロールアウト。SameSite-by-default および SameSite=None-requires-Secure の動作は、月曜日の米国大統領の日の祝日を除く 2020 年 2 月 17 日の週から、最初の限定された母集団に対して Chrome 80 Stable へのロールアウトを開始します。 この最初の限定的な段階から、徐々に拡大していくことで、エコシステムへの影響を注意深くモニターし、評価していきます。
エンドユーザーは、 chrome://flags/#same-site-by-default-cookies
および chrome://flags/#cookies-without-same-site-must-be-secure
でこれらの設定を無効にすることができます(Chrome 76以降で利用可能)。
SameSiteのクッキー設定とデフォルト動作の変更については、以下の「追加情報」を参照してください。
LiferayのSAMLインテグレーションへの影響
注:サービスプロバイダー(SP)として構成され、Liferay以外のアイデンティティプロバイダー(IdP)に接続しているLiferayインスタンスは、影響を受けるかどうかを明確にするために、プロバイダーに相談してください。
ブラウザセッションごとに、最初にSPが開始したSSOリクエストは引き続き機能しますが、ユーザーはLiferay SAML IdPにログインする必要があります(IdPですでに認証済みのセッションがある場合も同様)。 この動作は、SAML プラグインを Force Re-Authentication に設定した場合と同じである。 2回目のSPによるSSOリクエストを成功させるためには、ユーザーは事前にブラウザを再起動する必要があります。
SAML Single LogoutがLiferay SAML IdPで正しく機能しないという問題がありました。 このフローはIdP上で終了し、「あなたはサインインしています」というプロンプトが表示されます。 この状態では、SP上の関連クッキーをすべて削除しないと、SPからログアウトすることが困難になります。
SPでSSOリクエストを行った際に表示されていたページにリダイレクトすると正しく動作します。 これは、リダイレクトURLが "state "URLパラメータを通じて伝播され、Liferay SPのゲストセッションには保持されないためです。
影響を受ける環境
以下の条件をすべて満たす場合、お客様の環境が影響を受ける可能性があります。
- Liferay Portal 6.x EE および Liferay DXP 7.x のデプロイメントは、 Liferay Connector to SAML 2.0を使用して SAML IdP として構成されています。
- 5.0.0 DXP 7.2用
- DXP 7.1の4.1.0以下のバージョン
- DXP 7.0の3.1.1以降
- Liferay Portal 6.2 EEの場合、2.1.3以下。
- Liferay Portal 6.1 EE GA2およびGA3用の1.0.4以下のバージョン
- サービスプロバイダーとしてLiferay SAML IdPに接続するWebサイト
- サービスプロバイダーとアイデンティティプロバイダーが異なるドメイン上で動作している場合などです。
- https://www.mydomain.com -> https://www.idp.otherdomain.com : 影響を受ける(クロスサイト)。
- https://www.mydomain.com -> https://idp.mydomain.com : 影響を受けない (同一サイト) 。
- Google Chrome 80以上を使用するエンドユーザー
解像度
長期的な解決策
Liferayでは、 LPS-108070にSameSiteクッキーの属性を制御するロジックを実装しました。
固定バージョン
- Liferay Connector to SAML 2.0 for DXP 7.0: 3.1.2
- Liferay Connector to SAML 2.0 for DXP 7.1: 4.1.1
- Liferay Connector to SAML 2.0 for DXP 7.2: 5.0.1
更新日:2020年6月12日)。
詳細情報
前バージョンのファーストパーティ/同一サイトのクッキー処理仕様では、クッキーがサードパーティのコンテクストをサポートすべきであることを明示的に宣言する手段が定義されていませんでした。 その結果、これらのブラウザでは、 SameSite=None
でクッキーを完全に拒否するか、SameSite=Strict
と解釈してしまいます。 歴史的なクッキーの行動とは本質的に逆です 例えば、このSafariのバグ https://bugs.webkit.org/show_bug.cgi?id=198181をご覧ください。
SameSite = None
を正しく処理するには、OS(OSX / iOS)のアップグレードが必要であることを強調する価値があります。 もちろん、これには単にブラウザをアップグレードするよりもはるかに多くの投資が必要であり、互換性のないバージョンが引き続き使用される可能性が高くなります。
良いニュースは、これらの同じブラウザ/バージョンが引き続き古いCookieの動作をサポートしていることです。 非互換性を修正する機会を提供これには、 SameSite =なし
任意のSameSite属性なしで2番目のCookieを設定し、主要なクッキーがブラウザによって送信されていないときに、このクッキーを読みに戻って落下スルーを。
代替ソリューション
Set-Cookie応答ヘッダーを書き換えて、 SameSite = Noneを追加することができます。たとえば、Apache2 Headers modを使用するなど、Webサーバーレベルで
を保護します。
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None
注:これは単なる例です。