risposta

5

Sì e no. Poiché devi proteggere la tua chiave segreta per AWS (gli hacker potrebbero usarla per abusare del tuo account), non puoi autenticare le richieste direttamente in JS.

Mentre è possibile creare un'implementazione in JS, sarebbe intrinsecamente insicuro. Pratico per alcuni usi interni, non potrebbe mai essere distribuito in sicurezza (in quanto ciò potrebbe esporre la tua chiave segreta). Quello che potresti fare invece è utilizzare il tuo server per autenticare le richieste su SimpleDB e lasciare che JS esegua la richiesta effettiva su Amazon. Anche se è un po 'rotonda, funzionerebbe.

Lo svantaggio è che è necessario eseguire una serie di elaborazioni sul lato client. Probabilmente stai anche recuperando più dati di quanti ne consumi l'app/output, quindi l'elaborazione dei dati sul client anziché sul server probabilmente incontrerebbe più latenza semplicemente perché trasferisci più dati all'utente e l'elaborazione più lentamente.

Spero che questo aiuti

+1

Ora puoi (principalmente) fare questo lato client, in modo sicuro, senza rivelare la chiave segreta. Vedi la mia risposta qui sotto e la mia risposta correlata http://stackoverflow.com/questions/4988367/anonymous-read-with-amazon-simpledb. Riceverai il 99% delle chiamate lato client con l'1% rimasto con un componente piccolo, sicuro, lato server. – toolbear

2

Se no, come mai?

Sicurezza. Autenticati al DB con il tuo account sviluppatore. Amazon non conosce i tuoi utenti finali (di cui sarebbe necessario, per autenticare l'accesso direttamente dal browser). Spetta al codice dell'applicazione determinare quali utenti finali sono autorizzati a fare e quali no.

Detto questo, vi è l'applicazione di esempio Javascript Scratchpad for Amazon SimpleDB. Accede a SimpleDB direttamente dal browser (devi digitare le tue credenziali AWS).

+0

Potrebbe essere quello che sto cercando? – JSNewbie

+0

Bene, è ancora necessario configurare le autorizzazioni di accesso da qualche parte al di fuori del browser (dove non può essere violato). – Thilo

+0

Grazie, come al solito tutte le risposte sono buone. – JSNewbie

1

SimeplDBAdmin è un'interfaccia basata Javascript/PHP:

http://awsninja.com/2010/07/08/simpledbadmin-a-phpmyadmin-like-interface-for-amazon-simpledb/

Il lato PHP è uno script relè [relay.php] che passerà le richieste avanzate dal Javascript client e li invia al server, prende la risposta dal server e la riformatta per il client. Questo per aggirare facilmente i problemi interdominio con Javascript [se il client web ha scaricato la pagina web contenente il codice javascript da www.example.com, consentirà solo a javascript di connettersi nuovamente a www.example.com per impostazione predefinita] .

Tutto il resto, inclusa la firma della richiesta, viene eseguito dal codice Javascript.

Inoltre, Amazon ha rilasciato recentemente un nuovo servizio beta che consente di configurare account secondari sotto il proprio account Amazon. La protezione simpleDB è molto semplice [attivata o disattivata per account] ma, poiché fornisce una forma limitata di tracciamento delle richieste, si potrebbe sostenere che l'utilizzo di Javascript e l'assegnazione di ID utente e chiave PROPRIA per la firma delle richieste sia PIÙ sicuro. Il fatto che ogni utente utilizzi l'ID utente e il certificato SAME sarebbe, ovviamente, insicuro.

0

Vedere this answer alla domanda simile su come consentire l'accesso sicuro, anonimo e di sola lettura a SimpleDB da client non attendibili: anonymous read with amazon simpledb.

Alcune variazioni da quella risposta:

  • non impostare criteri di accesso in sola lettura. Tuttavia, consente un controllo a grana fine, quindi potresti comunque voler limitare il tipo di scritture consentite
  • non essere anonimo. I modelli AWS docs on token based auth e example apps mostrano percorsi paralleli: accesso anonimo o AWS non federato/accesso federato con le tue credenziali ma senza esporre la tua chiave segreta.
Problemi correlati