Autenticazione basic:
- Dopo la richiesta del documento protetto, la response( che apre la finestra delle credenziali) deve contenere gli header Content-type: text/html e Content-lenght: L ?
Dipende.
In linea di principio una response con status 401 Unauthorized potrebbe non trasportare alcun documento (lo header WWW-Authenticate è sufficiente a istruire il browser su cosa fare). In pratica response di questo genere spessissimo trasportano un documento HTML che dice "non sei autorizzato e ti devi autenticare" o qualcosa del genere. In questo caso, ovviamente, gli header della response devono descrivere tipo e lunghezza del documento trasportato, con gli header che lei ha indicato.
- se ci fosse url rewriting, bisogna modificare gli url contenuti nella finestra delle credenziali? Se così fosse, vuol dire che nel tasto "Accedi" c'è l'url modificato del documento che sto chiedendo? Cioè, visto che il browser dovrebbe mandare una richiesta identica alla precedente, come fa a sapere di aggiungere all'url l'identificazione di sessione?
O non ho capito la domanda o sta facendo grossa confusione.
Con autenticazione BASIC il browser NON segue nessun URL. La "finestra delle credenziali" non è un documento inviato dal server, è una finestra aperta dal browser in reazione ad uno header contenuto nella response (lo header WWW-Authenticate). Quindi non c'è nessun URL da riscrivere in quella response.
------------------------
Per quanto riguarda la FORM Authentication, se devo prelevare un documento, ad esempio offerte.html per cui necessita un’autenticazione, una possibile sequenza di request/response può essere la seguente?
GET /offerte.html http 1.1Request HeaderLV
HTTP 1.1 200 OKResponse HeaderLVDocumento html che contiene la Login Page (cioè il form)
PRIMA di inviare la response qui sopra il server ha aperto una sessione. Se usa i cookie allora la response mantiene i cookie. Se usa URL rewriting allora il form deve avere gli URL modificati.
NB: nei compiti e negli esami i FORM devono essere descritti esplicitamente; almeno i valori degli attributi DEVONO essere scritti.
POST credenziali (In questo punto più precisamente come funziona?) VEDI SLIDE; le credenziali sono dei dati inseriti in un form; form identico a qualsiasi altro form
Request headerLV
Se le credenziali sono errate il server risponde con
http 1.1 301 UnauthorizedResponse headerLvDocumento in cui dico che non è autorizzato
Se le credenziali sono corrette
http 1.1 200 ok
response headerlv/offerte.html (o comunque il documento richiesto)
response headerlv/offerte.html (o comunque il documento richiesto)
Aggiungo che in una provetta o negli esami è necessario inserire gli header che nelle slide ho definito essere irrinunciabili (Host, Referer, etc)
-------------------------
Supponiamo di avere un realm “Foto” a cui si puo’ accedere solo tramite Basic Authentication, e contenente solo immagini.
Quando io invio la richiesta:
GET /a/img.gif HTTP 1.1Request HeadersLV
Il server mi risponde:
HTTP 1.1 410 Unauthorizedwww-Authenticate:
......LV
......LV
Ora il dubbio che mi sono posto è:
all’interno della request successiva, l’URL relativo /a/img.gif sarà già modificato (del tipo GET /a/img.gif?ID=id1) o siccome la risposta (scritta sopra) del server non fornisce alcun documento, il server stesso non ha ancora modificato gli URL relativi?
La sessione viene creata alla ricezione della prima request (perché questa non trasporta nessun identificatore di sessione).
Ma la prima response non contiene nessun URL. Se la sessione viene mantenuta con URL rewriting, quindi, la seconda request non conterrà alcun identificatore di sessione; quindi il server non sarà in grado di capire che la seconda request appartiene ad d una sessione; quindi creerà un'altra sessione.