問題
ログインしようとすると、 認証に失敗しましたと表示されます。 ブラウザ
Cookieを有効にして再度お試しください。
が表示され、操作がうまくいかない。
Environment
- Liferay DXP 7.0 Fix Pack 102+について
- Liferay DXP 7.1 Fix Pack 26+について
- Liferay DXP 7.2 Fix Pack 15+について
- Liferay DXP 7.3 SP3、アップデート4+。
- Liferay DXP 7.4
解決策
根本的な原因
LPS-75442 の問題を解決するために、フロントエンドで新しいクッキーの検証を追加し、バックエンドで機能していなかった既存のクッキーの検証を修正しました。
ソリューション
エラーメッセージを回避するためには、次の点を確認する必要があります:
1. フロントエンドのCookieのバリデーションを確認します:
Liferay DXPを利用するには、ブラウザのCookieが有効になっている必要があり、有効になっていない場合は、ログイン操作ができない。
ブラウザのCookieが有効になっているか、また、サイトのCookieを無効にしていないか確認してください。
2. バックエンドのCookieのバリデーションを確認します:
Liferayはブラウザに COOKIE_SUPPORT
というテストクッキーを送り、クッキーが正しく動作していることを確認します。
Liferayは通常、Apache HttpdやNginxのようなWebサーバーの後ろに構成され、トラフィックはHTTPSからHTTPに変換される。 その後、リクエストはApache TomcatのHTTPポートにリダイレクトされます。
このような状況の中で
- TomcatはHTTPポートでリクエストを受信し、
COOKIE_SUPPORT
、「secure」フラグなしで送信することができます。 - クッキーに「secure」フラグがない場合、HTTPSを使用するモダンブラウザは、SameSiteやその他の設定により、このクッキーを無視します。
secure」フラグを強制的に追加するには、受信するすべてのリクエストをHTTPSとみなすようにTomcatアプリケーションサーバーを設定することができます。
secure=true パラメータを server.xml
ファイル内の Connector 構成に追加するだけです: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" secure="true" />
ワークアラウンド
上記の方法で解決しない場合は、 session.test.cookie.support=false
を portal-ext.properties ファイルに追加して、この検証を無効にしてみることも可能です。
重要: クッキーバリデーションは発動しませんが、クッキーが無効になっているとLiferayは正しく動作しません。
追加情報
- Tomcat "secure "属性: https://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Attributes
- SameSite=None」のCookieは、「secure」が必要です: