Google Chrome 80の影響と、SAMLでのSameSite Cookie設定のデフォルト動作の変更

問題

更新(2020年4月3日): ChromeはSameSite Cookieの変更を一時的にロールバックしています

更新(2020年6月12日):SAML 2.0コネクターの修正バージョンに関する情報を追加しました。

2月Chrome 80の リリースでは、明示的なSameSite属性なしでChromeがCookieを処理する方法のデフォルトの動作が変更されています。これらのCookieは SameSite = Lax として処理されます。つまり、このようなCookieはファーストパーティまたは同じサイトのコンテキストでサーバーにブラウザを送信し、クロスサイトリクエストでは送信されません。

https://www.chromium.org/updates/same-site による現在の展開計画は次のとおりです。

2020年月4日 :Chrome 80 Stableがリリースされました。 SameSite-by-defaultおよびSameSite = None-requires-Secure実施の有効化は、この初期のChrome 80安定版ロールアウトには含まれません。 SameSite実施がChrome 80安定版に対して有効になる時期の詳細については、次の項目を参照してください。
2020年2月:Chrome 80 Stableの適用ロールアウト:SameSite-by-defaultおよびSameSite = None-requires-Secureビヘイビアーは、2月17日の週から、最初の限られた人口に対してChrome 80 Stableにロールアウトされます。 、2020年、月曜日の米国大統領の祝日を除く。 徐々に拡大するロールアウトを通じて、この最初の限られたフェーズからの生態系への影響を綿密に監視および評価します。

エンドユーザーは chrome:// flags /#same-site-by-default-cookies および chrome:// flags /#cookies-without-same-site-must-be-secure ( Chrome 76以降で利用可能)。

SameSite Cookieの設定とデフォルトの動作の変更について詳しくは、以下の「追加情報」セクションを参照してください。

LiferayのSAML統合への影響

注:サービスプロバイダー(SP)として構成され、Liferay以外のIDプロバイダー(IdP)に接続するLiferayインスタンスは、影響を受けるかどうかをプロバイダーに確認する必要があります。

すべてのブラウザーセッションで、最初のSPによって開始されたSSO要求は引き続き機能しますが、ユーザーがIdPで既に認証されたセッションを持っている場合でも、Liferay SAML IdPにログインする必要があります。 この動作は、SAMLプラグインを強制再認証に設定する場合と同じです。 2番目のSPによって開始されたSSO要求では、成功するために、ユーザーがブラウザーを事前に再起動する必要があります。

SAMLシングルログアウトは、Liferay SAML IdPでは正しく機能しません。 サインインしていることを示すプロンプトが表示され、IdPでフローが終了します。 この時点から、SP上の関連するすべてのCookieを削除せずに、SPからログアウトすることが困難になる可能性があります。

SPでSSO要求を行ったときに表示されていたページへのリダイレクトは、正しく機能します。 これは、リダイレクトURLが「状態」URLパラメータを介して伝達され、Liferay SPのゲストセッションに保持されないためです。

影響を受ける環境

次の基準をすべて満たしている場合、環境が影響を受ける可能性があります。

  1. 使用SAML IdPのように構成されたポータルのLiferay 6.xのEEとLiferayのDXP 7.xの展開 SAML 2.0のLiferayコネクタ、バージョン
    • 5.0.0 for 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以下
  2. サービスプロバイダーとしてLiferay SAML IdPに接続するWebサイト
  3. サービスプロバイダーとアイデンティティプロバイダーは異なるドメインで実行されています。次に例を示します。
  4. Google Chrome 80以降を使用しているエンドユーザー

解決

長期的な解決

Liferayは、SameSite Cookieの属性を制御するロジックを LPS-108070実装しました。

修正バージョン

  • Liferay Connector to SAML 2.0 for DXP 7.03.1.2+
  • Liferay Connector to SAML 2.0 for DXP 7.14.1.1+
  • Liferay Connector to SAML 2.0 for DXP 7.25.0.1+

(2020年6月12日更新。)

詳しくは

以前のバージョンのファーストパーティ/同じサイトのCookie処理仕様では、Cookieがサードパーティのコンテキストをサポートする必要があることを明示的に宣言する手段を定義していませんでした。 これにより、これらのブラウザは SameSite = NoneでCookieを完全に拒否するか、または
SameSite = Strict解釈しました。 基本的に、これまでのCookieの動作とは逆です! たとえば、このSafariバグ 参照してくださいhttps://bugs.webkit.org/show_bug.cgi?id=198181

SafariおよびiOSデバイス上のブラウザーの場合、 SameSite = Noneを正しく処理するには、OS(OSX / iOS)のアップグレードが必要であることを強調しておく価値があります。 もちろん、これは単にブラウザをアップグレードするよりもはるかに多くの投資を必要とし、互換性のないバージョンが使用されたままになる可能性が高くなります。

良いニュースは、これらの同じブラウザ/バージョンが古いCookieの動作を引き続きサポートしていることです。 したがって、これにより、SameSite属性なしで2番目のCookieを設定し、プライマリCookieがブラウザによって送信されない場合にこのCookieの読み取りにフォールバックすることにより、 SameSite = None との非互換性を修正する機会が提供されます。

 

代替ソリューション

Set-Cookie応答ヘッダーを書き換えて、 を追加することが可能です。SameSite= None;たとえば、Apache2ヘッダーmodを使用するなど、Webサーバーレベルで を保護します。

 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None

注:これは単なる例です。

追加情報

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています