問題
- 7.2 環境 (7.0 からアップグレード) で トークン ベースの SSO を構成して有効にすると、ユーザーはログアウトできなくなり、代わりにホームページにリダイレクトされます (ログインしたままです)。 同じ SSO 構成を使用する 7.0 環境では、ユーザーは予想どおりにログアウトされ、サード パーティの SSO のログイン画面にリダイレクトされました。
-
.har ファイルを介したログアウト試行中に Cookie を調べると、スーパードメイン (
.website.com
) を使用する元の SMSESSION Cookie が消去されていないことがわかります。 また、「Set-Cookie」プロセスがログアウト応答に空白の値を設定していることもわかります (予想どおり Cookie をクリアするため) が、sub.website.com
のサブドメインに対してはそうしています。
Environment
- DXP 7.1、7.2、7.3
- アプリケーション サーバー: Tomcat 8.5+
解決策
- この問題を解決するには、ユーザーがログアウトするときに生成される SMSESSION Cookie が、既存の Cookie のドメインと一致する必要があります。この場合、
.website.com
のスーパードメインに存在します。 これは、次の ポータル プロパティのいずれかを介して実行できます。session.cookie.domain=.website.com
または
session.cookie.use.full.hostname[tomcat]=false
- Liferay 内の上記の構成に加えて、アプリケーション サーバーのコンテキスト内の構成を介して、ドット プレフィックス ドメイン (
.website.com
など) をサポートする CookieProcessor を使用するように Tomcat を構成する必要もあります。などの xml :<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
追加情報
- このサードパーティ ドキュメント で Cookie のドメイン属性について説明されているように、特定のドメインの Cookie はすべてのサブドメインで使用できます。 ただし、特定のサブドメインの Cookie はスーパードメインでは使用できないため、その逆は当てはまりません。 この場合、元の SMSESSION Cookie はスーパードメイン用であるため、既存の Cookie は最初は消去されませんでした。これは、
.website.com
(sub.website.com の外部) のスーパードメインに存在するためです。
サブドメイン)。 -
session.cookie.use.full.hostname
プロパティのデフォルト値は、DXP 7.1+ でtrue
に変更され、Tomcat 8.0 での の導入に対応するため、追加の Tomcat 構成手順が必要です。 CookieProcessor クラス および Tomcat 8.5 の新しい Rfc6265CookieProcessor クラス (要求/応答に追加される Cookie を処理します)。 Rfc6265CookieProcessor クラスを使用する場合、ドット接頭辞付きの Cookie ドメインをそのセット Cookie で使用することはできないため、これを必要とするユースケースでは、ドット接頭辞付きドメインをサポートする CookieProcessor を使用するために Tomcat 内の構成も必要になります。