Ich versuche, einen Upload zu S3 mithilfe eines HTML-POST-Formulars zusammen mit einer Upload-Richtlinie durchzuführen, und ich habe Schwierigkeiten, die entsprechende Signatur zu erstellen.Erstellen einer Signatur für AWS-Anfragelogik - SignatureDoesNotMatch abrufen
Ich bekomme immer eine Antwort 403 und SignatureDoesNotMatch zurück, wenn ich das Upload-Formular absende.
Mit diesem als Führer, http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html Ich habe mit dem folgenden kommen:
policy_hash = {
'expiration' => (Time.now.utc + 3600 * 3).iso8601
}
@policy = Base64.encode64(JSON.dump(policy_hash)).gsub("\n","")
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + @secret_access_key, Time.now.strftime("%Y%m%d"))
kRegion = OpenSSL::HMAC.digest('sha256', kDate, AWS_REGION)
kService = OpenSSL::HMAC.digest('sha256', kRegion, "s3")
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
@signature = Digest::SHA256.hexdigest(
OpenSSL::HMAC.digest('sha256', kSigning, @policy)
)
Und ich bin auch die Politik und die Unterschrift in dem von. Ich weiß, dass AWS_REGION
und @secret_access_key
korrekt sind, weil ich sie an anderer Stelle verwende.
Kann jemand etwas mit dem obigen Code falsch sehen? oder hat eine andere Anleitung?
Dank für Hinschauen, Michael. Ich entschied mich, eine andere Route einzuschlagen und am Ende nicht selbst die Signaturlogik zu codieren – user3895395