2011-02-09 19 views
5

Attualmente disponiamo di un servizio Web basato su SOAP che le nostre applicazioni interne utilizzano per autenticare gli utenti. Fondamentalmente, inviano una richiesta SOAP con nome utente e password. Il servizio Web autentica le proprie credenziali nei confronti del nostro archivio dati e restituisce le informazioni dell'utente se l'autenticazione ha esito positivo. Il servizio Web è protetto utilizzando l'autenticazione BASIC e SSL.Invio di informazioni sensibili al servizio REST

Abbiamo bisogno di apportare modifiche a questo servizio web e stavo considerando di riscriverlo come servizio REST. I servizi REST che ho creato in passato sono stati abbastanza semplici e non avevano bisogno di sicurezza. Non ho mai creato un servizio REST che utilizzava informazioni sensibili, quindi ho un paio di domande/dubbi:

Innanzitutto, esiste una procedura ottimale per inviare in modo sicuro parametri di query sensibili (credenziali utente) a un servizio REST? Posso ancora usare l'autenticazione BASIC e SSL.

In secondo luogo, se si invia una query a un servizio REST utilizzando il POST, è ancora considerato RESTful o GET richiesto per le query REST?

+1

Mi raccomando di leggere il seguente StackOverflow Q & A sullo stesso argomento: http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service –

risposta

3

È possibile utilizzare l'autenticazione SSL e di base anche con i servizi Web REST.

HTTP GET viene in genere utilizzato per il recupero dei dati (query) ma è possibile utilizzare anche il POST HTTP. GET è particolarmente utile se è possibile utilizzare qualsiasi tipo di caching HTTP. Il POST è utile se è necessario trasferire molti dati per definire la query o se il funzionamento del servizio Web prevede alcuni formati di dati complessi anziché semplici argomenti.

0

Passare da SOAP a REST fa un passo indietro per quanto riguarda la sicurezza.

Per quanto riguarda le migliori pratiche:

  • Non rotolare la vostra sicurezza. Utilizzare uno framework o una libreria esistente sottoposta a peer-review e testata.
  • Non passare chiavi statiche non crittografate. Se stai usando HTTP Basic e invialo attraverso il cavo, crittografalo.
  • Idealmente, utilizzare il codice di autenticazione dei messaggi basato su hash (HMAC) perché è il più sicuro.

Why REST security doesn't exist

+0

Perché la sicurezza REST non esiste - Pagina non trovata. –

1

Invece di fare l'autenticazione tramite REST, si potrebbe anche prendere in considerazione un protocollo di autenticazione di rete da utilizzare in abbinamento con i servizi web. Tecnologie come Kerberos e OAuth sono state progettate per questi tipi di casi d'uso.

per rispondere alle vostre domande, però:

  1. resto lo incoraggia a sfruttare HTTP e relativi protocolli, in modo da utilizzare SSL e autenticazione di base è del tutto appropriato.

  2. REST incoraggia l'uso non solo di GET e POST, ma anche di altri "verbi" HTTP come PUT e DELETE. Usa GET solo per le operazioni idempotent senza effetti collaterali.

Problemi correlati