> For the complete documentation index, see [llms.txt](https://checksound.gitbook.io/tecnologie5/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://checksound.gitbook.io/tecnologie5/web-services/rest-authentication-and-authorization/pit-stop.md).

# Pit Stop

Alcune domande su protocolli di sicurezza al livello applicativo per applicazioni web e servizi REST

1\) Per le applicazioni classiche web based abbiamo visto che il modo classico per autenticarsi può essere l’utilizzo di *Basic* o *Digest Authentication*. Le entità coinvolte sono l’utente e un’applicazione web che ha delle risorse che richiedono l’autenticazione in quanto protette.&#x20;

Facciamo il caso di un’applicazione web con due path: le risorse sotto il path **/public** sono pubbliche, mentre quelle sotto il path **/reserved** sono riservate e richiedono l’autenticazione. Cosa succede quando l’utente per mezzo del browser accede alla risorsa:

* GET */reserved/index.html* - facendo vedere il flusso di chiamate http che intercorrono tra l’utente/browser e il server sia nel caso di **Basic** che *Digest authentication*. E’ diverso il flusso di chiamate o è diverso solo l’algoritmo di protezione della password?
* in caso di accesso a una seconda risorsa sotto */reserved/account.html* (dopo aver acceduto alla index.html di prima ed essersi autenticati correttamente per accedere alla pagina precedente), cosa succede nell’interazione tra utente/browser all’accesso alla seconda pagina?

Qual è lo svantaggio della *Basic Authentication* a livello di sicurezza?

Qual è invece lo svantaggio a livello di interazione utente con questi due tipi di     autenticazione?<br>

2\) Descrivere la *form authentication* come avviene.<br>

3\) Descrivere il formato *JWT* (*JSON Web Token*) del token di autorizzazione e parla dell’interazione tra client e server.<br>

4\) Per risolvere quale problema è stato pensato il protocollo *OAuth*?<br>

Fate un esempio di utilizzo del protocollo *OAuth*.<br>

Descrivere le entità principali che ci sono nel protocollo *OAuth*.<br>
