2016-07-15 8 views
1

Ich habe eine mobile Messaging-App, wo Sie Bilder und Text teilen können.Amazon S3 CORS - nur für mobile App aktivieren

Ich habe einen Amazon S3-Bucket, wo ich alle Fotos aus der App speichern und dann den Pfad in der Datenbank speichern.

Was ich erreichen möchte ist, dass die Dateien von meinem Amazon S3 nur auf meiner mobilen App verfügbar sein sollen. (CORS nur für die mobile App)

Ist das möglich? Gibt es eine bessere Möglichkeit, die Dateien auf Amazon S3 zu schützen und nur in der mobilen App verfügbar zu sein?

Kann mir jemand einen Weg erklären, dies zu erreichen?

Antwort

2

CORS ist nicht wirklich ein Mechanismus zur Sicherung von Inhalten. Es ist ein Mechanismus zum Sichern von Browsern, verhindert, dass sie nach Dinge fragen, die sie nicht verlangen sollten. Die Tatsache, dass sie auch den Zugriff auf Inhalte einschränkt, ist ein Nebeneffekt.

Die einfache Lösung ist, dass Ihre App ihre Anforderungen an S3 signiert - mit signierten URLs oder Senden von Authorization Header mit Anfragen. Sie können dies auf Ihrem Anwendungsserver generieren, falls Sie einen haben, oder mit Lambda und API Gateway, und die signierten Links bei Bedarf der App bereitstellen, oder Sie können die Cognito - und S3 - Komponenten des AWS SDK verwenden, um temporäre Anmeldeinformationen zu erhalten signierte Links in der App.

+0

Ich dachte daran, eine Route in meiner API zu machen, wo ich Dateien von S3 und innerhalb von S3 anfordere, um CORS für meine API-URL zu aktivieren, was denkst du? – Hiero

+0

@Hiero, immer noch, wenn Sie auf die S3-URL direkt in der neuen Registerkarte des Browsers zugreifen, wird es die Anfrage nicht blockieren. Was Sie brauchen, ist [Teilen S3 Objekte mit Signed-URLs] (http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html) –

+0

@DeepakChaudhary danke Mann! – Hiero