2010-03-23 11 views
5

Abbiamo un'applicazione REST che viene utilizzata principalmente da applicazioni che non hanno bisogno di mantenere il loro stato, quindi fino alla data in cui siamo rimasti "RESTFUL" senza mantenere uno stato. Usiamo il Privato/Pubblico (simile ad Amazon) per l'autenticazione. Attualmente il cliente passa le credenziali per ogni richiestaModo per mantenere una sessione in un'applicazione REST

Ora abbiamo un nuovo requisito in cui dobbiamo mantenere lo stato (o conversazione). Il client può essere un Ricca applicazione o dispositivo portatile. Sto cercando di trovare il modo migliore per implementare lo stato. Dovremmo trasmettere un ID di sessione e mantenere tale ID ..è la migliore e l'unica soluzione?

+2

Perché la RIA o il palmare non possono mantenere una sessione e ottenere risorse dal server REST? Perché rompere le regole fondamentali di REST? Perché non spingere la sessione di stato in cui appartiene - nell'interfaccia umana? –

+0

Buona domanda, stai bene con le credenziali inviate attraverso ogni richiesta seguita dall'autenticazione .. che sembra essere il punto di forza per alcuni dei miei ragazzi nel team – romanianGeek

+0

L'autenticazione può facilmente essere memorizzata nella cache lato server e infliggere quasi zero penalità prestazionali. – Gandalf

risposta

3

Il passaggio a un ID di sessione non è l'unico modo e non il modo migliore per mantenere lo stato della conversazione. Il modo migliore, se si dispone di una RIA è di mantenere lo stato sul client stesso, dove appartiene, come suggeriscono alcuni dei commenti. Questo significa ancora inviare le credenziali ogni richiesta.

Ri-autenticazione su ogni richiesta è l'unico modo, e se si ritiene che ci sia un impatto sulle prestazioni sul server, il server può (come suggerito) memorizzare il risultato di una richiesta di autenticazione per un periodo di tempo. Digest authentication potrebbe aiutare ad evitare la memorizzazione nella cache delle risposte firmando in modo crittografico i token che vanno oltre il filo.

Se questo non è abbastanza buono si potrebbe usare qualcosa di simile a Google ClientLogin, e dando al cliente un token criptato che può essere verificata senza bisogno di chiedere l'autorizzazione, e senza passare reali credenziali dell'utente sul filo. Google loro stessi facendo il login su https, e quindi usando i token generati su http. È aperto per gli attacchi di riproduzione per tutta la vita del token.

+0

+1 per il collegamento all'autenticazione del digest. – Triztian

Problemi correlati