Disclaimer: Sono nuovo della scuola di pensiero REST, e sto cercando di avvolgere la mia mente intorno ad esso.Puoi aiutarmi a capire questo? "Errori comuni REST: le sessioni sono irrilevanti"
Quindi, sto leggendo questa pagina, Common REST Mistakes, e ho trovato che sono completamente sconcertato dalla sezione sulle sessioni che è irrilevante. Questo è quello che dice la pagina:
Non ci dovrebbe essere bisogno di un client per "accedere" o "avviare una connessione". L'autenticazione HTTP viene eseguita automaticamente per ogni messaggio. Le applicazioni client sono utenti delle risorse , non dei servizi. Pertanto, non c'è niente a cui accedere! Diciamo che stai prenotando un volo su un servizio web REST . Non si crea una nuova connessione "sessione" al servizio . Piuttosto, chiedi "itinerario oggetto creatore" per creare un nuovo itinerario . È possibile iniziare a riempire gli spazi vuoti, ma poi ottenere alcuni componenti totalmente altrove sul Web per riempire altri spazi vuoti. Non c'è nessuna sessione, quindi non c'è il problema della migrazione dello stato di sessione tra client. Non è inoltre disponibile il problema di "affinità di sessione" nel server (sebbene continui a caricare i problemi di bilanciamento per continuare).
OK, ho capito che l'autenticazione HTTP viene eseguita automaticamente su ogni messaggio, ma come? Il nome utente/la password sono inviati ad ogni richiesta? Non basta aumentare la superficie di attacco? Mi sento come se mi mancasse una parte del puzzle.
Sarebbe male avere un servizio REST, ad esempio /session
, che accetta una richiesta GET, in cui si passerà un nome utente/password come parte della richiesta e si restituisce un token di sessione se l'autenticazione è avvenuta con successo , che potrebbe essere poi passato insieme alle richieste successive? Questo ha senso da un punto di vista REST, o è che manca il punto?
Questa risposta non ha senso per me. In primo luogo, dice che è OK passare l'accesso e la password ogni volta e quindi anche una volta, il che ha senso. Quindi, viene suggerita l'idea di restituire al client lo stato di accesso corretto sotto forma di token. Se necessario, il token potrebbe codificare l'ora della creazione. Siamo certamente autorizzati a restituire le informazioni al cliente. Quindi, questo suggerimento mi sembra soddisfacente. La risposta dice che non va bene perché "porta lo stato", ma non è l'idea di "ST" in "REST" che lo stato può essere trasferito tra il client e il server? –