2016-05-29 18 views
0

Ich habe einen JavaScript-Dateimanager geschrieben, um Benutzerdateien auf einem Amazon S3 zu verwalten. Es verwendet die AWS Javascript API. Entwickelte es mit fest codierten IAM-Benutzeranmeldeinformationen, und jetzt für die Produktion möchten stattdessen temporäre Anmeldeinformationen verwenden.So übergeben Sie die Anmeldeinformationen an AWS STS GetSessionToken

Mein Plan ist, dass unser PHP-Server die Temp-Credentials aus den IAM-Credentials generiert, über AJAX-Callback vom JS-Code nach PHP über STS GetSessionToken. Es scheint einfach zu sein, aber ich kann keine Dokumentation darüber finden, wie ich den IAM-Schlüssel/den geheimen Schlüssel an GetSessionToken in der URL weitergeben kann. Die Beispiele in dem AWS docs zeigen alle so etwas wie:

https://sts.amazonaws.com/?Version=2011-06-15&Action=GetSessionToken&DurationSeconds=3600&AUTHPARAMS

Wo ich "AUTHPARAMS" guess so offensichtlich ist, dass ich keine weitere Erklärung benötigen sollte. Aber leider brauche ich weitere Erklärungen. Alles, was ich von der PHP-Seite der Dinge brauche, ist dieser eine kleine Aufruf, also wollte ich nicht wirklich das ganze AWS PHP SDK nur dafür installieren. Wenn ich nur herausfinden kann, wie man die URL für diesen einen Anruf erstellt, kann ich es über CURL senden und alles einstellen. Zumindest war das der Plan.

Gibt es eine Möglichkeit, GetSessionToken direkt über die REST-API aufzurufen und den IAM-Schlüssel/-Secret zu übergeben, oder ist das wirklich komplizierter?

Antwort

0

Sie müssen über AWS API request signing lernen. Weitere Informationen here. Beachten Sie, dass AWS-Regionen, die nach dem 30. Januar 2014 geöffnet wurden, eine v4-Signatur benötigen, während frühere Regionen eine v2- oder v4-Signatur akzeptieren.

Oder verwenden Sie einfach das PHP SDK, das alles viel einfacher macht.

+0

Indem Sie die "Anfrage" signieren, meinen Sie das Signieren der GetSessionToken-Anfrage aus PHP? Das ist in Ordnung, wenn das der richtige Weg ist, anstatt Key/Secret als Parameter zu übergeben. Aber ich möchte nicht jede Anfrage auf der Javascript-Seite unterzeichnen müssen. – DaveInMaine

+0

Ich denke, fast jede Anfrage wird auf die eine oder andere Weise signiert, normalerweise von einem der API-Wrapper. Sobald ich also die temporären Zugangsdaten von PHP bekomme und sie an die JS API sende, wird diese API im Browser in der Lage sein, diese temp-Zugangsdaten zu verwenden, um alle ihre aws-Aufrufe automatisch zu signieren, ohne dass PHP-Callbacks benötigt werden. Ist das so, wie es funktionieren sollte? – DaveInMaine

+0

Ich denke, Sie haben einen Fehler von 2, hier @jarmod. Die Signaturversion für Regionen, die während oder nach 2014 gestartet wurden, ist V4, ältere Regionen unterstützen V4 oder V2. –

Verwandte Themen