Disclaimer: sono una novità per la scuola di pensiero REST e sto provando a pensarci su.
Quindi, sto leggendo questa pagina, Errori comuni di REST , e ho scoperto che sono completamente sconcertato dal fatto che la sezione sulle sessioni sia irrilevante. Questo è ciò che dice la pagina:
Non dovrebbe essere necessario un client per "accedere" o "avviare una connessione". L'autenticazione HTTP viene eseguita automaticamente su ogni messaggio. Le applicazioni client sono consumatori di risorse, non servizi. Pertanto non c'è nulla a cui accedere! Supponiamo che tu stia prenotando un volo su un servizio web REST. Non si crea una nuova connessione "sessione" al servizio. Piuttosto chiedi "all'oggetto creatore dell'itinerario" di crearti un nuovo itinerario. Puoi iniziare a riempire gli spazi vuoti ma poi ottenere qualche componente totalmente diverso altrove sul web per riempire alcuni spazi vuoti. Non esiste alcuna sessione, quindi non esiste alcun problema di migrazione dello stato della sessione tra client. Non vi è inoltre alcun problema di "affinità di sessione"
Va bene, ottengo che l'autenticazione HTTP viene eseguita automaticamente su ogni messaggio, ma come? Il nome utente / la password vengono inviati ad ogni richiesta? Questo non aumenta semplicemente la superficie di attacco? Mi sento come se mi mancasse una parte del puzzle.
Sarebbe male avere un servizio REST, per esempio, /sessionche accetti una richiesta GET, in cui si passerebbe un nome utente / password come parte della richiesta e restituisca un token di sessione se l'autenticazione ha esito positivo, che potrebbe essere quindi passato con successive richieste? Ha senso dal punto di vista del RESTO o manca il punto?