Direct interaction between JavaScript S3 SDK and RGW: SignatureDoesNotMatch Error
Jeder Request wird nach einem festen Schema signiert. Dabei können beliebige Header und ihre Werte mit in die Signatur einfließen. Das Problem tritt auf, wenn das JS S3 SDK im Browser den host
Header mit in die Signatur mit einfließen lässt. Sobald der Request beim Reverse Proxy landet, wird der host
Header von ihm verändert und der original host
Header in den x-forwarded-host
Header geschrieben (zumindest bei Traefik, welches ich benutze). Nun versucht aber das RGW mit dem veränderten host
Header die Signatur zu berechnen, welche aber natürlich nicht mehr übereinstimmt. Somit wird jede Anfrage mit dem Error 403 Forbidden SignatureDoesNotMatch
abgelehnt.
Das Backend kann damit umgehen, da in die Signatur jedes Requests der host
Header NICHT mit einfließt.
Ich bin mir nicht zu 100% sicher, dass das die Ursache für die SignatureDoesNotMatch
Fehlermeldungen sind, aber das ist meine bisher beste Vermutung nach über 2h debugging und Recherche. Leider kann man im JS SDK nicht einstellen, welche Header man für die Signatur benutzt (zumindest habe ich die Option nicht gefunden), jedoch könnte man die Signatur selber erstellen. Das würde ich jedoch nur sehr ungern machen.