問題
- 支払いリンクによってリダイレクトされた後、セッションはログアウトします。
-
再現手順 :
1. ライフレイにログインします。
2. Postmanで API を呼び出します。
リクエストパラメータを添付 (SSL Commerz Request Parameters.txt)
リクエストタイプ: x-www-form-urlencoded
URL: https://sandbox.sslcommerz.com/gwprocess/v4/api. php
3. テスト用の非公開ページへのリダイレクト URL (success_url、fail_url、cancel_url) を設定します。
4. ブラウザーで応答から GatewayPageURL を開きます。
5. ログインをクリックし、事前に入力された携帯電話番号でサインインします。 OTP: 111111
6 を使用します。 CVV 111
事前入力されたカードのいずれかを使用してください。 予想される動作: 成功ボタンをクリックすると、Liferay にリダイレクトされます。
観察された動作: ユーザー セッションがログアウトされ、ユーザーはログイン ページにリダイレクトされます。
Environment
- Liferay DXP 7.3 フィックスパック 1
解決策
-
問題は、ブラウザが、支払いサイトから戻った後、 http://localhost:8080/group/guest/test へのリクエストで、保存された Cookie をポータルに送り返さないことであることが判明しました。
-
この理由は、現在の環境では、デフォルトの Cookie 動作の制限により、適切なクロスサイト使用が妨げられているためです。
要約すると、'SameSite=none' 値を持つすべての Cookie は、ブラウザーによって 'フィルターで除外' されます。 (デフォルト値は「SameSite=Lax」です。)
-
- この問題を解決するには、次の手順を試してください。
1) tomcat/conf/context.xml の <context> 要素に <CookieProcessor sameSiteCookies="none"/> を追加しました。
2) SSL/TLS 構成のハウツーに基づいて HTTPS をセットアップします。 (これは、「SameSite=none」の Cookie が暗号化された要求でのみ送信されるためです。)
次のコマンドを実行して、サーバーの秘密鍵と自己署名証明書を格納するキーストア ファイルを作成します。
$JAVA_HOME/bin/keytool -genkey -エイリアス tomcat -keyalg RSA$CATALINA_BASE/conf/server.xml の「SSL HTTP/1.1 コネクタ」エントリのコメントを外して変更します。
<!-- Define an SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>3) https://localhost: /group/guest/test.
追加情報
- Chrome では、自己署名証明書を使用したテストを機能させるために追加の作業が必要です: https://www.linkedin.com/pulse/how-fix-chrome-neterrcertinvalid-priyanka-kumari