リバースプロキシの背後でosTicket(v1.8.1-dpr)を使用しようとすると、確実に取得されます
Invalid CSRF Token __CSRFToken__
Invalid CSRF token [b4cab350cfce13ee10a8cd27445e7f4466db039e] on
(redacted)
原因は、ブラウザIPに基づいてトークンを生成するosticket javascriptにあるようです。これは、もちろん、トークンがサーバー側で検証されるときのリバースプロキシIPとは異なります。
リバースプロキシはec2上のApacheインスタンスです
リバースプロキシはX-Forwarded-For
を送信する必要があります。 しますか?
はい、リバースプロキシはX-Forwarded-Forを正しいアドレスに設定しています。 クライアントはNATの背後にあるため、バインドされたインターフェイスアドレスを取得している場合、JavascriptはRFC1918アドレスを取得している可能性があります(それが発生しているかどうかは不明です)。
プロキシサーバー(osTicketが実行されている場所とクライアント)間のCookie設定を確認できますか? 返されたCookieのCookieドメインとCookieパスを確認し、その間にあるサーバーがCookieまたはCookieの設定をいじっていないことを確認します。
私はそれをチェックしますが、それは問題が存在する場所である可能性が非常に高いです(内部ホストドメインとプロキシされたドメインは大きく異なります)。 数時間後に更新します。
この投稿は1年以上前のものですが、osTicketを使用してリバースプロキシをセットアップしようとしているときに何度かポップアップしました。 NginXをリバースプロキシとして使用しています(わかっている、サポートされていないなど)。いくつかの調整を加えて、「無効なCSRFトークン」エラーを渡すことができました。
ロケーションブロックで、いくつかのヘッダー設定を追加する必要がありました。
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass <Backend osTicket location>;
}
pass_headerはそれを機能させるように見えましたが、他の設定により、サーバーが正しいIPアドレスを確実に受信できるようになります。 サーバーやhttpブロックでもこれらの設定を行うことができると思いますが、これは私のニーズに応えました。
@webbeosTicketのサーバーとしてnginxを公式にサポートしていません。 リバースプロキシには何でも使用できます。 個人的には、HAProxyが好きです。 構成情報を投稿していただきありがとうございます。セットアップが機能することをうれしく思います。
最も参考になるコメント
この投稿は1年以上前のものですが、osTicketを使用してリバースプロキシをセットアップしようとしているときに何度かポップアップしました。 NginXをリバースプロキシとして使用しています(わかっている、サポートされていないなど)。いくつかの調整を加えて、「無効なCSRFトークン」エラーを渡すことができました。
ロケーションブロックで、いくつかのヘッダー設定を追加する必要がありました。
pass_headerはそれを機能させるように見えましたが、他の設定により、サーバーが正しいIPアドレスを確実に受信できるようになります。 サーバーやhttpブロックでもこれらの設定を行うことができると思いますが、これは私のニーズに応えました。