Share PowerPoint. Anywhere!
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

WebDAV

Uploaded from authorPOINT Lite
Download as Download Not Available PPT
Presentation Description

No description available

Like authorSTREAM?


You can vote once a day till December
10th, Vote Now!
Views: 147
Like it  ( Likes) Dislike it  ( Dislikes)
Added: February 21, 2008 This presentation is Public
Presentation Category :Entertainment
Presentation StatisticsNew!
Views on authorSTREAM: 138 | Views from Embeds: 9
- 1 views

Others - 8 views
Presentation Transcript

Secure WebDAV : Secure WebDAV Pisapia Arturo Luigi – artpisapia79@blu.it Scanzio Stefano – zioskenz@inwind.it


WebDAV: Introduzione : WebDAV: Introduzione Cenni preliminari ad Hypertext Transfer Protocol (HTTP) WebDAV


HTTP in breve (1) : HTTP in breve (1) HyperText Transfer Protocol (RFC 2616) Protocollo per l’accesso a risorse WWW Il client invia una richiesta al server Il server esegue la richiesta e ritorna il risultato WebDAV: Introduzione


HTTP in breve (2) : HTTP in breve (2) Client Server  Marshal request  Transmit request Internet  Unmarshal request  Perform request  Marshal response  Transmit response  Unmarshal response WebDAV: Introduzione


HTTP in breve (3) : Web Server HTTP in breve (3) WebDAV: Introduzione


Formato HTTP request : Formato HTTP request Formato della request : {method} {Request-URI} {protocol version} Esempio: GET /users/ejw/flyer.doc HTTP/1.1 Una serie di headers: {header}: {value} RFC 822 (email) style header encoding Esempio: Content-Type: text/html Un request body opzionale Separato dagli headers da un Un sequenza di 8-bit bytes (ottetti) WebDAV: Introduzione


Formato HTTP response (1) : Formato HTTP response (1) Molto simile al formato della request: Una linea di Stato: {protocol version} {status code} {status phrase} Codici di stato: 1xx: Informational 2xx: Successful 3xx: Redirection 4xx: Client error 5xx: Server error Esempio: HTTP/1.1 200 OK WebDAV: Introduzione


Formato HTTP response (2) : Formato HTTP response (2) Una serie di headers Stesso formato della request Un body della risposta Stesso formato della request WebDAV: Introduzione


Esempio HTTP : Esempio HTTP GET / HTTP/1.1 Host: www.webdav.org Content-Length: 0 HTTP/1.1 200 OK Date: Wed, 25 Apr 2001 22:58:22 GMT Server: Apache Last-Modified: Thu, 19 Apr 2001 05:30:49 GMT ETag: "30e7da-2f9d-3ade7809" Accept-Ranges: bytes Content-Length: 12189 Content-Type: text/html WebDAV risorsas Request Response WebDAV: Introduzione


Nozioni importanti di HTTP 1.1 : Nozioni importanti di HTTP 1.1 Le richieste sono trasmesse su TCP/IP La connessione è lasciata aperta alla fine di una richiesta (request) Utilizza la rete con efficienza Protocollo Stateless: tutte le informazioni necessarie per rispondere a una richiesta sono contenute nella request Entity tag è un identificatore per lo stato della risorsa Se la risposta alla GET cambia, cambia anche l’Etag WebDAV: Introduzione


Metodi HTTP (1) : Metodi HTTP (1) Le operazioni supportate da HTTP includono: GET – legge una risorsa HEAD – ritorna solo gli headers di una risorsa Utile per il caching (si ottiene velocemente l’entity tag) OPTIONS – metodi supportati POST – protocol-tunneling PUT – scrive una risorsa DELETE – elimina una risorsa WebDAV: Introduzione


Metodi HTTP (2) : Metodi HTTP (2) Sebbene HTTP 1.1 può usare PUT e DELETE, viene utilizzato principalmente come protocollo read-only PUT e DELETE non sono utilizzati ampiamente dai client WebDAV: Introduzione


WebDAV : WebDAV Distributed Authoring and Versioning on the World Wide Web Un'architettura per la realizzazione di strumenti interoperabili per l'authoring e il versioning distribuito sul web http://www.webdav.org/ http://www.ics.uci.edu/pub/ietf/webdav/ WebDAV: Introduzione


WebDAV e HTTP : WebDAV e HTTP WebDAV è un'estensione di HTTP Aggiunge proprietà e collezioni al modello HTTP Fornisce comandi per Proprietà - list, add, remove Operazioni sui nomi delle risorse - move, copy Controllo di sovrascrittura - lock, unlock Collezioni - mkcol WebDAV: Introduzione


Utilizzo di WebDAV : Utilizzo di WebDAV Dovete scrivere un documento da mettere disponibile sulla rete Aprite il vostro Word Processor preferito e scrivete Salvate una copia sul Web Decidete di includere un altro autore Attivate la possibilità di condivisione del documento Usando lo stesso Word Processor, continuate a scrivere sul documento L'altro autore può lavorare indipendentemente da voi sul documento WebDAV: Introduzione


Ciclo d'uso di WebDAV : Ciclo d'uso di WebDAV Client Server File… Open LOCK Blocca la risorsa PROPFIND GET Manda il contenuto al client Edit PUT File… Save Exit UNLOCK Salva il contenuto modificato Sblocca la risorsa Ne manda proprietà al client WebDAV: Introduzione


Possibili usi di WebDAV : Possibili usi di WebDAV Un protocollo per l'authoring distribuito Un file system sul Web, con caratteristiche positive in caso di grandi latenze Un meccanismo integrato per accedere a repositories Document management system, configuration management system, file system, ecc. Un protocollo per la gestione di team distribuiti nel software engineering e nel content management WebDAV: Introduzione


Aspetti di WebDAV : Aspetti di WebDAV Infrastruttura di collaborazione Infrastruttura per la memorizzazione di metadata Infrastruttura per la gestione di spazi di nomi Infrastruttura per il Versioning Infrastruttura per l'Access Control Infrastruttura di ricerca – DASL (Distributed Authoring Searching and Locating group) WebDAV: Introduzione


Aspetti di WebDAV (1) : Aspetti di WebDAV (1) Infrastruttura di collaborazione Attraverso il meccanismo di locking Permette l'authoring collaborativo remoto di pagine Web e di qualunque tipo di risorsa e ogni formato di dato Infrastruttura per la memorizzazione di metadati E' possibile creare, modificare, rimuovere e accedere a proprietà (coppie arbitrarie) I valori delle proprietà sono frammenti XML WebDAV: Introduzione


Aspetti di WebDAV (2) : Aspetti di WebDAV (2) Infrastruttura per la gestione di spazi di nomi Copy,Move di risorse singole e di gerarchie di strutture Creare e modificare nuove collezioni di risorse WebDAV: Introduzione


Aspetti di WebDAV (3) : Aspetti di WebDAV (3) Il Vesioning è una parte fondamentale di WebDAV Infrastruttura per il Versioning check-out, check-in, storia del grafo delle versioni, commenti, accesso alle vecchie versioni, operazioni di configuration management Infrastruttura per l'Access Control Access Control: la possibilità di controllare in remoto chi può leggere e scrivere una risorsa La possibilità di specificare gruppi di collaborazione e gruppi di diritti WebDAV: Introduzione


Aspetti di WebDAV (4) : Aspetti di WebDAV (4) Infrastruttura di ricerca Ricerca di risorse con una data proprietà, o un dato valore Ricerca per sottostringhe all'interno di una risorsa o di una collezione di risorse L’obiettivo della ricerca può essere una collezione di risorse,una gerarchia di risorse o un intero server WebDAV: Introduzione


WebDAV Object Model : WebDAV Object Model Risorsa Web Corpo Proprietà Coppie (nome, valore) WebDAV: Introduzione


Metodi WebDAV (1) : Metodi WebDAV (1) Prevenzione da sovrascritture: LOCK – evita che chi non possiede il lock in scrittura possa modificare la risorsa UNLOCK – rimuove il lock Metadata Management: PROPFIND – legge le proprietà di una risorsa Allprop – tutte le proprietà Propname – solo i nomi Prop – solo le proprietà desiderate PROPPATCH – scrive le proprietà di una risorsa WebDAV: Introduzione


Metodi WebDAV (2) : Metodi WebDAV (2) Namespace Management COPY – copia una risorsa MOVE – sposta una risorsa MKCOL – crea una nuova collezione WebDAV: Introduzione


Metodi WebDAV (3) : Metodi WebDAV (3) LOCK UNLOCK COPY MOVE* DELETE* MKCOL* (PUT*) GET PUT* Risorsa Web Corpo Proprietà Coppie (nome, valore) * - dipendono da LOCK PROPFIND PROPPATCH* WebDAV: Introduzione


Webdav: Proprietà e collezioni : Webdav: Proprietà e collezioni Proprietà Live e Non Live Le collezioni


Proprietà (1) : Proprietà (1) Le proprietà sono coppie (nome, valore) che contengono informazioni su una risorsa Il nome è sempre un URI (universalità e generalità) WebDAV: Proprietà


Proprietà (2) : Proprietà (2) Le proprietà possono essere: Live: proprietà di cui è il server a mantenere coerenza obbligando sintassi e semantica. Ad esempio: data di ultima modifica Non-live: proprietà in cui sintassi e semantica sono fornite dal client. Non esiste obbligo di coerenza. Ad esempio: autore del documento Vantaggi: sia il server che il client possono definire nello stesso modo delle proprietà, e ciascuno si gestisce e tiene aggiornate le proprie (flessibilità) WebDAV: Proprietà


Proprietà (3) : Proprietà (3) I valori delle proprietà sono frammenti ben-formati in XML estensibili, internazionali (grazie a Unicode), permettono valori strutturati, permettono l'inserimento senza fatica “Plug-and-Play” di strutture RDF (Resource Description Framework) RDF è un network-based data model con una rappresentazione XML del modello WebDAV: Proprietà


Collezioni (1) : Collezioni (1) Una collezione è una lista di URI delle risorse che ne fanno parte Svolge il compito di raggruppamento che hanno le directory nei file system, a parte che: Una risorsa può avere più URI e quindi appartenere a più collezioni Non c'è nessuna implicazione sulle modalità di memorizzazione fisica delle risorse sul server E' possibile definire collezioni ordinate, indipendentemente dal valore di qualunque proprietà WebDAV: Collezioni


Collezioni (2) : Collezioni (2) Le risorse forniscono la possibilità di navigare gerarchicamente o meno tra esse Permettono il supporto di finestre di dialogo tipo "File:Open" o "File:Save as" anche su server di rete WebDAV: Collezioni


Webdav: metodi HTTP per l’authoring distribuito : Webdav: metodi HTTP per l’authoring distribuito Propfind, Proppatch Mkcol,Copy e Move


PROPFIND (1) : PROPFIND (1) Legge le proprietà su una risorsa tutti i nomi e valori delle proprietà Tutti i nomi e proprietà specificati nella richiesta Solo una lista di nomi di proprietà WebDAV: Metodi


PROPFIND (2) : PROPFIND (2) Elenca i membri di una collezione L'intestazione Depth della richiesta permette di specificare quanti livelli mostrare: Depth: 1 - La collezione e i suoi membri Depth: Infinity - La collezione, i suoi membri, i loro membri ecc ricorsivamente. WebDAV: Metodi


Sintassi PROPFIND (1) : Sintassi PROPFIND (1) Richiesta: PROPFIND “risorsa della quale si vogliono conoscere delle o tutte le proprietà “ HTTP/1.1 Host: “indirizzo WWW dell’host” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta PROPFIND in XML Si noti che nel body XML vi sono indicate all’interno del tag prop le proprietà che si vogliono vedere o se non sono indicate per default si intende tutte WebDAV: Metodi


Sintassi PROPFIND (2) : Sintassi PROPFIND (2) Risposta: HTTP/1.1”codice di stato della risposta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio”, si noti che le xxxx negli esempi vi sono solo perché non abbiamo inserito questo dato …resto della risposta PROPFIND in XML Nel codice XML vengono restituiti tutti i codici di stato dovuti alla richiesta delle proprietà all’interno del tag propstat, che contiene anche il tag prop il quale a sua volta contiene le proprietà di interesse WebDAV: Metodi


PROPFIND: richiesta : PROPFIND: richiesta PROPFIND /demo.txt HTTP/1.1 Host:www.foo.bar Content-Type: text/xml; charset=“utf-8” Content-Length: 160 WebDAV: Metodi


PROPFIND: risposta : PROPFIND: risposta HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset=“utf-8” Content-Length: 321 http://www.foo.bar/demo.txt HTTP/1.1 200 OK "10598798c153be1:a82" text/plain WebDAV: Metodi


Esempio PROPFIND (3) : Esempio PROPFIND (3) Si noti che nell’esempio vengono richieste due particolari proprietà: l’etag e il content type La scrittura charset=“utf-8” indica il set di caratteri utilizzato che si riferisce alle specifiche ISO 10646 WebDAV: Metodi


PROPPATCH : PROPPATCH Crea e rimuove proprietà da una risorsa Le direttive di creazione o rimozione sono eseguite atomicamente ( in modo da assicurare che non avvengano stati inconsistenti) Permette di aggiungere o rimuovere membri da una collezione WebDAV: Metodi


Sintassi PROPPATCH (1) : Sintassi PROPPATCH (1) Richiesta: PROPPATCH “risorsa alla quale si vogliono cambiare le proprietà “ HTTP/1.1 Host: “indirizzo WWW dell’host” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta PROPPATCH in XML È importante notare che all’interno del codice XML vi è una o più URI che identificano dove stanno le proprietà della risorsa che si vogliono andare a modificare, come si può notare nell’esempio proposto WebDAV: Metodi


Sintassi PROPPATCH (2) : Sintassi PROPPATCH (2) Risposta: HTTP/1.1”codice di stato della risposta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio”, si noti che le xxxx negli esempi vi sono solo perché non abbiamo inserito questo dato …resto della risposta PROPPATCH in XML Nel codice XML vengono restituiti tutti i codici di stato che si sono verificati dopo la modifica delle proprietà, ognuna delle quali è contenuta in un tag propstat WebDAV: Metodi


PROPPATCH: richiesta : PROPPATCH: richiesta PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: 283 xmlns:Z="http://www.seclabX.it/webDAV/v09/"> Arturo Pisapia Stefano Scanzio WebDAV: Metodi


PROPPATCH: risposta (1) : PROPPATCH: risposta (1) HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset=“utf-8” Content-Length: xxxx xmlns:Z="http://www.seclabX.it/webDAV/v09/"> http://www.foo.com/bar.html HTTP/1.1 200 OK WebDAV: Metodi


PROPPATCH: risposta (2) : PROPPATCH: risposta (2) Si nota facilmente che il corpo della risposta 207 che indica Multi-Status è un’entity HTTP text/xml che contiene un set di elementi XML chiamati response che contengono una serie di codici di stato del tipo 200,300,400 e 500 generati durante l’invocazione del metodo In particolare nell’esempio viene richiesto di impostare la proprietà all’indirizzo http://www.seclabX.it/webDAV/v09 WebDAV: Metodi


Altro Esempio Richiesta (1) : Altro Esempio Richiesta (1) PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Arturo Pisapia Stefano Scanzio WebDAV: Metodi


Altro Esempio Richiesta (2) : Altro Esempio Richiesta (2)
WebDAV: Metodi


Altro Esempio Risposta (1) : Altro Esempio Risposta (1) HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx http://www.foo.com/bar.html HTTP/1.1 424 Failed Dependency WebDAV: Metodi


Altro Esempio Risposta (2) : Altro Esempio Risposta (2) HTTP/1.1 409 Conflict Copyright Owner can not be deleted or altered.
WebDAV: Metodi


Breve descrizione esempio : Breve descrizione esempio Il client richiede al server di impostare il valore della proprietà http://www.w3.com/standards/z39.50/Authors Di rimuovere la proprietà http://www.w3.com/standards/z39.50/Copyright-Owner visto che la proprietà non può essere rimossa viene restituito il codice 409 (Conflict), invece per l’altra richiesta viene restituito il codice 424 (Failed dependency) che ci fa sapere che questa azione sarebbe andata a buon fine se non ci fosse stato il conflitto nella rimozione dell’altra proprietà WebDAV: Metodi


MKCOL : MKCOL Il comando MKCOL crea una nuova collezione vuota Può essere invocato con un corpo di richiesta: Senza corpo di richiesta: crea collezione vuota Con corpo di richiesta: da come risultato particolare media-type WebDAV: Metodi


Esempio MKCOL : Esempio MKCOL Si crea una collezione chiamata /webdisc/xfiles/ sul server www.server.org Richiesta: MKCOL /webdisc/xfiles/ HTTP/1.1 Host: www.server.org Risposta: HTTP/1.1 201 Created WebDAV: Metodi


COPY : COPY Duplica risorse, proprietà e collezioni La copia avviene server-side (non c'è un giro inutile sul client) Copie per valore, eseguite ricorsivamente attraverso l'intestazione Depth Permette di controllare la sovrascrittura di proprietà o risorse già esistenti se una risorsa esiste e l’overwrite header è impostato a “T” allora prima di fare la copy avverra una delete con depth infinity sulla destinazione Se l’overwrite header è impostato a “F” l’operazione non avrà successo WebDAV: Metodi


Esempio di Copy con overwrite (1) : Esempio di Copy con overwrite (1) Richiesta: COPY /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.sito.it/users/~s97074/index.html Risposta: HTTP/1.1 204 No Content WebDAV: Metodi


Esempio di Copy con overwrite (2) : Esempio di Copy con overwrite (2) La risorsa viene copiata da www.cclinf.polito.it/~s97074/index.html a http://www.example.it/users/~s97074 Lo status code 204 (no content) ci indica che la risorsa preesistente alla destinazione è stata sovrascritta WebDAV: Metodi


Esempio di Copy senza overwrite (1) : Esempio di Copy senza overwrite (1) Richiesta: COPY /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.sito.it/users/~s97074/index.html Overwrite: F Risposta: HTTP/1.1 412 Precondition Failed WebDAV: Metodi


Esempio di Copy senza overwrite (2) : Esempio di Copy senza overwrite (2) Viene svolta la stessa operazione del precedente esempio ma in questo caso viene impostato l’overwrite header a “F” il quale indica che la sovrascrittura non è permessa Una risposta Precondition failed con codice di stato 412 viene ritornata per indicare che la destinazione non è assente WebDAV: Metodi


MOVE : MOVE Definita come equivalente ad una COPY seguita da una DELETE, eseguiti atomicamente Ha le stesse opzioni di COPY Vantaggi: Permette di rinominare risorse Permette di spostare le risorse in una differente posizione nella gerarchia Più efficiente di eseguire copy e delete separatamente WebDAV: Metodi


MOVE esempio (1) : MOVE esempio (1) Richiesta: MOVE /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.es.it/users/~s97074/index.html Risposta: HTTP/1.1 201 Created Location: http://www.es.it/users/~s97074/index.html WebDAV: Metodi


MOVE esempio (2) : MOVE esempio (2) Si muove il contenuto della risorsa individuata dall’URL www.cclinf.polito.it/~s97074/index.html in http://www.es.it/users/~s97074/index.html Il contenuto della risorsa destinazione sarà sovrascritto se non-null In questo caso,dal momento in cui non vi era nulla alla destinazione il codice di stato è 201 (created) WebDAV: Metodi


WebDAV: Locking : WebDAV: Locking Lock Unlock


LOCK (1) : LOCK (1) Il lock definito da WebDAV è solo in scrittura Un client che non possiede il lock non può eseguire comandi che modifichino lo stato della risorsa bloccata In particolare impedisce i comandi: PUT, POST, DELETE, MKCOL, PROPPATCH, MOVE, LOCK, UNLOCK Al contrario GET e PROPFIND non sono impediti dal lock WebDAV: Locking


LOCK (2) : LOCK (2) Il lock funziona solo su intere risorse E' l'unico modo per rendere il meccanismo indipendente dal content type E' molto simile al meccanismo fornito dai file system, rendendo la transizione di un file system in file system distribuito particolarmente semplice Le proprietà live possono cambiare durante la vita di un lock, le proprietà non-live debbono essere modificate dal proprietario del lock WebDAV: Locking


LOCK (3) : LOCK (3) Altro motivo: I content types cambiano continuamente due revisioni di Html e Xml mentre si discuteva lo standard WebDAV Supportare una revisione di un content type può rendere il protocollo facilmente obsoleto WebDAV: Locking


LOCK (4) : LOCK (4) I lock possono essere esclusivi o condivisi Un lock esclusivo permette l'accesso solo al client che ha ottenuto il lock Un lock condiviso permette al proprietario del lock di specificare altri client che possono accedere alla risorsa I lock condivisi sono un bene e un male!!! WebDAV: Locking


LOCK (5) : LOCK (5) Tuttavia i lock esclusivi sono troppo rigidi in condizioni di lavoro opportunistiche La gente si dimentica di rilasciare un lock E' necessario richiedere l'intervento dell'amministratore per rimuovere un lock dimenticato I lock condivisi Permettono di continuare il lavoro anche se il proprietario del lock se ne è andato alle Seychelles Richiedono però meccanismi out-of-band e in definitiva extra-protocollo per la negoziazione sull'accesso alla risorsa WebDAV: Locking


Ciclo di vita di un Lock : Ciclo di vita di un Lock unlocked locked LOCK UNLOCK LOCK lock timeout Rimozione del lock da parte dell'amministratore WebDAV: Locking


Procedimento di LOCK : Procedimento di LOCK LOCK crea il lock specificato dall’elemento xml sulla URI di richiesta LOCK ritorna un lock token che identifica il lock al server Il client può richiedere un timeout WebDAV: Locking


Sintassi Lock (1) : Sintassi Lock (1) Richiesta: LOCK “risorsa sulla quale si vuole fare il Lock “ HTTP/1.1 Host: “indirizzo WWW dell’host” Timeout: “tempo di durata del lock,vi è la possibilità di specificarne più di uno in base a quello che poi il server supporta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta LOCK in XML Si noti che la proprietà locktype è sempre impostata a write perché è l’unico tipo di lock supportato WebDAV: Locking


Sintassi Lock (2) : Sintassi Lock (2) Risposta: HTTP/1.1 “codice di stato” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della risposta LOCK in XML All’interno della proprietà lockdiscovery vi sarà la descrizione del lock attivato sulla risorsa WebDAV: Locking


LOCK: richiesta : LOCK: richiesta LOCK /~s97074/webdav.doc HTTP/1.1 Host: www.cclinf.polito.it Timeout: Second-500, Infinite Content-Type: text/xml Content-Length: 151 http://www.cclinf.polito.it/~ejw/contact.html WebDAV: Locking


LOCK: risposta (1) : LOCK: risposta (1) HTTP/1.1 200 OK Content-Type: text/xml Content-Length: xxxx infinity http://www.cclinf.polito.it/~ejw/contact.html WebDAV: Locking


LOCK: risposta (2) : LOCK: risposta (2) Second-500 opaquelocktoken:918527121.406
WebDAV: Locking


Esempio LOCK (3) : Esempio LOCK (3) Nell’esempio precedente si nota come viene creato con successo un lock esclusivo sulla risorsa www.cclinf.polito.it/~s97074/webdav.doc Il campo contiene informazioni associate al possessore del lock Il client richiede un lock per tempo infinito,se possibile, altrimenti di 500 secondi infatti il server imposta un timeout che rimuove il lock dopo 500 secondi WebDAV: Locking


Lock Token : Lock Token Il lock token è un tipo di token di stato rappresentato da una URI È ritornato dopo ogni operazione di LOCK terminata con successo all’interno della proprietà lockdiscovery I lock token devono essere Unici Questo viene fatto attraverso gli opaque lock token Per garantire l’unicità su tutte le risorse a tempo indefinito l’opaquelocktoken necessita di utilizzare il meccanismo dell’Universal Unique Identifier (UUID),come descritto nell’[ISO-11578] WebDAV: Locking


Loken Token: è rischioso usarli? (1) : Loken Token: è rischioso usarli? (1) La specifica dei lock token richiede l’uso dei UUID Gli UUID contengono un campo nodo che è l’ IEEE address, di solito l’indirizzo dell’host per sistemi con più nodi IEEE 802 ogni nodo disponibile può essere usato, dal momento in cui un WebDAV server emetterà diversi lock è facile che il suo indirizzo IEEE 802 sia esposto WebDAV: Locking


Loken Token: è rischioso usarli? (2) : Loken Token: è rischioso usarli? (2) I principali rischi associati all’esposizione dell’indirizzo IEEE 802 sono: È possibile tracciare lo spostamento di HW da subnet a subnet È possibile riconoscere il produttore dell’HW che gira sul Server WebDAV È possibile determinare il numero dei computer che utilizzano WebDAV WebDAV: Locking


LOCK Multi-risorsa (1) : LOCK Multi-risorsa (1) Usando l’header depth impostandolo a Infinity si può fare un lock su una collezione e su tutti i suoi figli È ritornato un singolo lock token che specifica il lock su tutte le risorse Un Unlock su questo token rimuove il lock da tutte le risorse in questione WebDAV: Locking


LOCK Multi-risorsa (2) : LOCK Multi-risorsa (2) Il lock gerarchico assicura… Tutte le risorse nella gerarchia fanno parte del lock Le risorse eliminate dalla gerarchia vengono rimosse dal lock Ma… Se una gerarchia locked viene copiata o spostata la gerarchia di destinazione non sarà locked WebDAV: Locking


Esempio LOCK Multi-risorsa (1) : Esempio LOCK Multi-risorsa (1) Richiesta: LOCK /webdav/ HTTP/1.1 Host: webdav.sb.aol.com Timeout: Infinite, Second-4100000000 Depth: infinity Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="ejw", realm="ejw@webdav.sb.aol.com", nonce="...", uri="/workspace/webdav/proposal.doc", response="...", opaque="..." WebDAV: Locking


Esempio LOCK Multi-risorsa (2) : Esempio LOCK Multi-risorsa (2) http://www.ics.uci.edu/~ejw/contact.html WebDAV: Locking


Esempio LOCK Multi-risorsa (3) : Esempio LOCK Multi-risorsa (3) Risposta: HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx http://webdav.sb.aol.com/webdav/secret HTTP/1.1 403 Forbidden WebDAV: Locking


Esempio LOCK Multi-risorsa (4) : Esempio LOCK Multi-risorsa (4)
http://webdav.sb.aol.com/webdav/ HTTP/1.1 424 Failed Dependency
WebDAV: Locking


Esempio LOCK Multi-risorsa (5) : Esempio LOCK Multi-risorsa (5) Si noti che si richiede un lock esclusivo alla collezione e a tutti i suoi figli L’utente inoltre specifica un lock di durata infinita Si ha errore 403 (forbidden) perché non si può fare lock sulla risorsa Il codice di stato 424 (failed dependency) semplicemente sta ad indicare che il metodo non può essere svolto perché qualcos’altro non è andato a buon fine WebDAV: Locking


UNLOCK : UNLOCK UNLOCK rimuove il lock identificato dal token, non solo sulla risorsa specificata nell'URI della richiesta, ma anche su tutte le risorse incluse nel lock Se un lock è stato richiesto su una collezione, tutta la collezione viene liberata dal lock: il lock utilizza la semantica del tutto o niente! WebDAV: Locking


Esempio UNLOCK (1) : Esempio UNLOCK (1) Richiesta: UNLOCK /~s97074/webdav/info.doc HTTP/1.1 Host: www.cclinf.polito.it Lock-Token: Authorization: Digest username="ejw", realm="ejw@webdav.sb.aol.com", nonce="...", uri=" /~s97074/webdav/proposal.doc", response="...", opaque="...“ Risposta: HTTP/1.1 204 No Content WebDAV: Locking


Esempio UNLOCK (2) : Esempio UNLOCK (2) Nell’esempio il lock indentificato dal token opaco viene rimosso con successo dalla risorsa Il codice di stato è 204 (no-content) ed indica semplicemente il successo e il fatto che non c’è un body nella risposta WebDAV: Locking


Feature Discovery : Feature Discovery Il metodo OPTIONS (è di HTTP!) viene usato per scoprire le caratteristiche HTTP o WebDAV supportate dal server per una data risorsa OPTIONS /wg/ HTTP/1.1 Host: www.webdav.org HTTP/1.1 200 OK Date: Tue, 09 Feb 1999 02:39:06 GMT Server: Apache/1.3.4 (Unix) DAV/0.9.6 Content-Length: 0 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE DAV: 1 WebDAV: Options


WebDAV Software : WebDAV Software Sebbene il protocollo sia recente è già ampiamente supportato sia in ambiente Opensource che nei software commerciali


Principali WebDAV Clients (1) : Principali WebDAV Clients (1) Application Software: Microsoft: Office 2000 (Word, Excel, PowerPoint, Publisher) apre/salva direttamente da/al web server Usa il meccanismo dei Lock per la protezione da sovrascritture Adobe: Photoshop 6, Acrobat 5 Web Site Authoring Adobe: Go Live 5 Macromedia: Dreamweaver 4 WebDAV: Software


Principali WebDAV Clients (2) : Principali WebDAV Clients (2) Remote File Access: Apple: Mac OS X webdavfs OS X ha Apache e mod_dav (si deve configurare mod_dav perchè funzioni) Microsoft: Windows Web Folders Wind River Software: WebDrive Goliath (Mac, open source) Nautilus (GNOME project, Eazel) WebDAV Explorer (UC Irvine, Feise/Kanomata, open source) WebDAV: Software


Principali WebDAV Clients (3) : Principali WebDAV Clients (3) XML editors Excosoft: Documentor Altova: XML Spy 3.5 WebDAV: Software


Cadaver : Cadaver è un client WebDAV da linea di comando che permetto upload di file,download,on-screen display,move/copy,utilizzo di collezioni e operazioni di Lock La release corrente è: cadaver 0.21.0 Cadaver WebDAV: Clients


Sitecopy : Sitecopy Permette di editare i web site localmente Aggiorna in modo remoto siti web e permette al sito remoto di essere sincronizzato con quello locale usando un unico comando Il programma si ricorda cosa c’è sul server, così non deve andare a vedere ogni volta il sito Piattaforme supportate:Linux, FreeBSD, OS/2, Win32, IRIX, Solaris, SunOS, Digital Unix WebDAV: Clients


PerlDAV (1) : PerlDAV (1) PerlDAV è una libreria Perl per modificare il contenuto dei server Web attraverso il supporto di WebDAV. Si può fare LOCK, DELETE, PUT di files La libreria PerlDAV consiste di: HTTP::DAV – una API object-oriented del client Web-DAV dave - DAV Explorer, una console end-user per interagire con i server WebDAV WebDAV: Clients


PerlDAV (2) : PerlDAV (2) Dave permette di: Ricevere e inviare files Creare directory su Web server remoti Remuovere files e directory da un WebServer remoto Editare un file sul server con un solo comando Lock,unlock di files e directory remoti Utilizzo di Https Autenticazione tramite Digest WebDAV: Clients


Kiwi : Kiwi Kiwi è un file system che si basa su HTTPS e WebDAV Kiwi è un file system distribuito realizzato per permettere l’accesso sicuro di file a tal fine ci si è basati su SSL e WebDAV Il server kiwi si basa su Apache,Mod_Dav,Mod_SSL e Mod_Kiwi Il modulo Mod_Kiwi viene utilizzato principalmente per l’autenticazione http://www-cs students.stanford.edu/~austin/kiwi.pdf WebDAV: Clients


Neon : Neon Neon è un http e WebDAV client Supporta tutti i comandi principali di WebDAV (MOVE, COPY, DELETE, MKCOL, PROPPATCH,PROPFIND) Supporto SSL attraverso OpenSSL http://www.webdav.org/neon/neon-0.23.7.tar.gz WebDAV: Clients


DAV explorer (1) : DAV explorer (1) DAV Explorer è un client WebDAV che permette: Vedere l’albero del server WebDAV Upload e download di risorse Web Locking e unlocking di risorse Visualizza tutte le proprietà delle risorse Copia,rinomina,crea e elimina collezioni e/o singole risorse Piattaforme supportate:Windows 95/98/ME/NT/2000, Solaris e Linux L’interfaccia del DAV Explorer è simile per look e funzionalità a quello di Windows WebDAV: Clients


DAV explorer (2) : DAV explorer (2) Connettersi ad un server WebDAV WebDAV: Clients


DAV explorer (3) : DAV explorer (3) Se vi è la basic authentication Dav Explorer vi chiederà login name e password WebDAV: Clients


DAV explorer lock (1) : DAV explorer lock (1) Locking di risorse: Per lockare una risorsa selezionarla nel pannello a destra, poi selezionare “Lock” dal File menu, o cliccare sull’icona di lock nella toolbar Per visualizzare le proprietà di un lock andare nel “View” menu e poi selezionare “View Lock Properties” Una piccola finestra apparirà con le informazioni sul lock WebDAV: Clients


DAV explorer lock (2) : DAV explorer lock (2) Ecco un esempio di lock: WebDAV: Clients


DAV explorer Proprietà (1) : DAV explorer Proprietà (1) Proprietà: Per visualizzare le proprietà selezionare il menù “View” e poi “View Properties” o cliccare click sull’icona view properties Una finestra visualizzerà le proprietà definite sulla risorsa WebDAV: Clients


DAV explorer Proprietà (2) : DAV explorer Proprietà (2) Ecco un esempio: WebDAV: Clients


Alcuni Prodotti commerciali : Alcuni Prodotti commerciali My Docs Online! Adobe Acrobat 5 Adobe GoLive Mac OS X Macromedia Dreamweaver Merlin and Lancelot Dav4J Microsoft Windows (attraverso le Web Folders a partire da IE 5.0) WebDAV: Link a prodotti


Versioning : Versioning Panoramica argomenti Terminologia Data model Checkout,checkin e uncheckin Update, Merging Activities Workspaces Baselines


Panoramica : Panoramica Le funzionalità del protocollo sono suddivise in: Caratteristiche Le caratteristiche possono essere Basic o Advanced WebDAV: Versioning


Caratteristiche Basic : Caratteristiche Basic VERSION-CONTROL Basic versioning Solo versioning automatico (no checkin or checkout) REPORT e version-tree report CHECKOUT Checkout, checkin, e uncheckout VERSION-HISTORY La risorsa Version history ha una URL nello spazio dei nomi del server WORKSPACE Server workspace RISORSE DI LAVORO Client workspace UPDATE LABEL WebDAV: Versioning


Caratteristiche Advanced : Caratteristiche Advanced MERGE BASELINE memorizzano checked-in state delle collezioni ACTIVITY Versioni associate ad una modifica logica VERSION-CONTROLLED-COLLECTION Le collezioni possono avere versione WebDAV: Versioning


Version History : Version History WebDAV: Versioning Foo.htm 1 2 7 6 5 4 3 initial Beta1 Test1 Beta2 URL path of Versioned Controlled Resource Version Name Label Successor Linea di Discendenza Revision History Predecessor Fork Merge


VERSION-CONTROL (1) : VERSION-CONTROL (1) Il VERSION-CONTROL fa il controllo della versione a una risorsa senza versione una risorsa che è già version-controlled WebDAV: Versioning


VERSION-CONTROL (2) : VERSION-CONTROL (2) Se la richiesta di VERSION-CONTROL è fatta per una risorsa senza versione: Crea una nuova version history resource: una risorsa che contiene tutte le versioni di una risorsa version-controlled Una lista di URL delle versioni in questa revisione L’URL della versione principale ovvero il padre di tutte le versioni Crea una nuova version resource: è una risorsa che contiene una copia di un particolare stato (contenuto e proprietà non-live) di una risorsa version-controlled Il server assegna alla nuova version resource una nuova URL univoca Converte la risorsa senza versione in una version controlled resource Ha un puntatore alla version history resource WebDAV: Versioning


Fondamenti del Versioning (1) : Fondamenti del Versioning (1) Ogni versione ha un suo URL, in modo da permettere collegamenti ipertestuali a una specifica versione Quindi ogni versione deve essere una risorsa a se stante WebDAV: Versioning


Fondamenti del Versioning (2) : Fondamenti del Versioning (2) Le aree di lavoro sono la motivazione per mantenere separata la risorsa version-controlled dalla risorsa history Un workspace permette a un utente di lavorare per conto suo, nella sua porzione del namespace per esempio, Paolo e Luisa potrebbero avere due workspace: /ws/users/paolo/ and /ws/users/luisa/ Se entrambi vogliono pubblicare foo.html nel loro workspace locale, ognuno ha bisogno di una version controlled resource in questo modo una version history può essere associata a più risorse version controlled WebDAV: Versioning


CHECKOUT : CHECKOUT Per lavorare su una risorsa si può fare: Check out editing Check in WebDAV: Versioning


CHECKOUT : CHECKOUT CHECKOUT si può applicare a una risorsa version controlled per creare una nuova working resource Permette modifiche al corpo e alle proprietà non-live della version controlled resource Se una versione è già checked-out, o ha un successore, una fork (ramificazione) è accettabile La proprietà DAV:checkout-fork su una versione ha effetto sulla formazione di ramificazioni (fork) ok: fork permessa discouraged: il client deve indicare che deve fare il fork forbidden: la ramificazione non è permessa (version history lineare) WebDAV: Versioning


Esempio Checkout (1) : Esempio Checkout (1) Richiesta: CHECKOUT /his/12/ver/V3 HTTP/1.1 Host: repo.webdav.org Content-Length: 0 Risposta: HTTP/1.1 201 Created Location: http://repo.webdav.org/wr/157 Cache-Control: no-cache WebDAV: Versioning


Esempio Checkout (2) : Esempio Checkout (2) Nell’esempio si fa checkout sulla versione V3 e la nuova working resource è http://repo.webdav.org/wr/157 WebDAV: Versioning


CHECKIN / UNCHECKIN (1) : CHECKIN / UNCHECKIN (1) CHECKIN blocca lo stato di una risorsa version controlled : Crea una nuova version resource Corpo e proprietà non-live sono uguali a quelle della version controlled resource Blocca il corpo e le proprietà non-live della risorsa version controlled (le rende read-only) Un commento che descrive lo scopo di un cambio può essere scritto in DAV:comment property (prima del CHECKIN) WebDAV: Versioning


CHECKIN / UNCHECKIN (2) : CHECKIN / UNCHECKIN (2) UNCHECKOUT interrompe la sequenza di editing Elimina la CHECKOUT Ripristina lo stato precedente all stato di CHECKOUT della version controlled resource WebDAV: Versioning


Esempio Checkin (1) : Esempio Checkin (1) Richiesta: CHECKIN /wr/157 HTTP/1.1 Host: repo.webdav.org Content-Length: 0 Risposta : HTTP/1.1 201 Created Location: http://repo.webdav.org/his/23/ver/15 Cache-Control: no-cache WebDAV: Versioning


Esempio Checkin (2) : Esempio Checkin (2) La working resource /wr/157 attraverso il checkin permette la creazione della nuova versione all’indirizzo http://repo.webdav.org/his/23/ver/15 WebDAV: Versioning


Autoversioning (1) : Autoversioning (1) Ci sono molte applicazioni WebDAV Non conoscono il versioning! Vorrebbero provvedere all’automatic versioning WebDAV: Versioning


Autoversioning (2) : Autoversioning (2) Ci sono due tipi di autoversioning: Ogni modifica crea una versione nuova PUT/PROPPATCH  CHECKOUT  PUT/PROPPATCH  CHECKIN Funziona bene con i client che replicano le risorse nel loro spazio locale e poi una volta finito l’editing trasferiscono al server Ogni coppia LOCK/UNLOCK crea una nuova versione LOCK  LOCK  CHECKOUT UNLOCK  CHECKIN  UNLOCK Funziona bene per i clients che lavorano direttamente sul server WebDAV e utilizzano I lock WebDAV: Versioning


Labels (1) : Labels (1) È una stringa leggibile che distingue una versione in una version history da tutte le altre versioni all’interno di quella version history Garantisce unicità all’interno di una version history WebDAV: Versioning


Labels (2) : Labels (2) Può essere riutilizzata in version history differenti Per esempio, “release_beta” può essere usata per identificare diverse versioni su diverse version history Può essere usata come un semplice modo per memorizzare le strutture Svantaggio: i labels vanno cambiati man mano che le versioni cambiano WebDAV: Versioning


Labels (3) : Labels (3) Il metodo LABEL è usato per impostare/muovere/rimuovere un label da una versione Label: header può essere usato con GET/PROPFIND su una risorsa version controlled per recuperare informazioni WebDAV: Versioning


UPDATE : UPDATE Provvede un meccanismo per cambiare lo stato di una checked-in version controlled resource in quello di un’altra versione della version history di quella risorsa Di solito il corpo e le proprietà non-live di una version controlled resource sono le stesse dell’ultima checked-in version UPDATE Modifica il contenuto e le proprietà non-live … … di una risorsa checked-in version-controlled … per diventare l’update dell’ultima versione della version history WebDAV: Versioning


Merging (1) : Merging (1) Le ramificazioni in una version history sono utilizzate per due scopi: Rappresentare simultaneamente gli sviluppi di diversi collaboratori (parallel development) Rappresentare varianti di una risorsa Linguaggio naturale, computing platform, ecc È pertanto utile unire le ramificazioni che rappresentano sviluppi paralleli del lavoro Si combinano così gli sforzi di più persone in un unico progetto armonico WebDAV: Versioning


Merging (2) : Merging (2) Il MERGE che combina due versioni: Combina in modo minimo le due ramificazioni nel version history Fa uno sforzo per fare il merge del contenuto se il server capisce il content type di entrambe le versioni text/* merge dovrà essere verosimilmente il tipo uniformemente supportato WebDAV: Versioning


Version Tree Report : Version Tree Report Una visualizzazione grafica di una version history aiuta a capire: Informazioni necessarie a creare questa vista: Lista di versioni Nomi delle Versioni Relazioni tra predecessori/successori Nel modello DeltaV le informazioni sono distribuite: Version history resource: liste di versioni Version resources: nomi delle versioni,relazioni pred/succ Usando PROPFIND, abbiamo bisogno di N+1 network requests nel caso peggiore (N=# di versioni) WebDAV: Versioning


Activities: cosa sono? : Activities: cosa sono? Spesso un cambiamento logico si estende attraverso più versioni su diverse version history Le Activities collegano un cambiamento logico con il set di versioni create mentre viene fatto il cambiamento Le versioni di una version history vengono limitate a una sola linea di discendenza Le Activities non hanno versione A volte ci si vuole assicurare che tutto il lavoro venga svolto da tutti su una sola linea di discendenza Per evitare merging tra collaboratori diversi Le Activities vengono usate per rafforzare il lavoro su una sola linea di discendenza WebDAV: Versioning


Activities: utilizzo (1) : Activities: utilizzo (1) MKACTIVITY crea una nuova risorsa activity Subito dopo il checkout, l’utente specifica l’activity Questa activity è associata a una nuova versione creata al checkin In particolare: L’URL della risorsa checked-out viene memorizzata nella activity DAV:activity-checkout-set property Al checkin, l’URL della nuova versione viene messa nella activity DAV:activity-version-set property… …e la checked-out resource viene rimossa da DAV:activity-checkout-set WebDAV: Versioning


Activities: utilizzo (2) : Activities: utilizzo (2) Usando le activities è possibile selezionare un particolare cambiamento logico per il merging in un altro workspace L’activity viene utilizzata in una MERGE request L’ultima versione di una activity è quella usata nel merge (per ogni version history) WebDAV: Versioning


Workspace : cos’è? : Workspace : cos’è? Un workspace è una locazione… …dove una persona può lavorare da sola … a “riparo” dai cambiamenti fatti dagli altri collaboratori sullo stesso insieme di risorse WebDAV: Versioning


Workspace: uso : Workspace: uso Workspace, tipico utilizzo: Due persone che modificano entrambi lo stesso file e vogliono testare in tranquillità le loro modifiche al codice La struttura di un grande progetto con questi cambiamenti viene cambiata, ma: Non si desidera che tutti si fermino in attesa che quelle modifiche siano completate Si vuole mantenere ogni cambiamento nello spazio dei nomi invisibile agli altri fino al completamento Uno sviluppatore fa in modo che i suoi cambiamenti non siano visibili I nuovi file sono nei loro Workspace, ma non sotto version control finchè non si giunge alla fine dei cambiamenti WebDAV: Versioning


Workspace: tipi : Workspace: tipi Vi sono due tipi di workspace: Server client La differenza principale è che il server contiene una porzione del suo namespace per ogni workspace I workspace possono mantenere dati con e senza versione WebDAV: Versioning


Server workspaces (1) : Server workspaces (1) Ha un diverso namespace per ogni workspace Per esempio: Sara e Franco hanno entrambi un workspace Sara : /users/people/Sara/projectX/… Sara fa tutto quel che vuole nella sua area Franco : /users/people/Franco/projectX/… Franco,anche lui fa tutto quel che vuole nella sua area WebDAV: Versioning


Server workspaces (2) : Server workspaces (2) Possono esserci repliche locali di versioni Vantaggi Permette l’accesso da locazioni e macchine diverse Permette che le operazioni sul namespace siano isolate Svantaggi Richiede sforzi per implementarlo WebDAV: Versioning


Client workspace : Client workspace Lo spazio dei nomi del server non viene conservato I files vengono replicati nelle macchine locali Vantaggi Si utilizza meno il server namespace Svantaggi Non si può accedere al workspace da macchine e locazioni diverse Le operazioni sul Namespace sono subito visibili WebDAV: Versioning


Meccanismi del Server Workspace (1) : Meccanismi del Server Workspace (1) MKWORKSPACE crea un nuovo workspace Questa è la directory radice del progetto Es., /users/people/Sara/projectX/ WebDAV: Versioning


Meccanismi del Server Workspace (2) : Meccanismi del Server Workspace (2) VERSION-CONTROL aggiunge delle risorse version controlled al workspace Crea una nuova risorsa version controlled per una version history La version history avrà diverse risorse version controlled Si pensi alla risorsa version controlled come un punto di accesso ad alcune locazioni nel namespace per fare operazioni sulla version history WebDAV: Versioning


Sincronizzare i workspace : Sincronizzare i workspace Ad un certo punto un utente che lavora nel suo workspace avrà bisogno dei cambiamenti fatti dagli altri collaboratori Il MERGE combina due workspace Di solito la sorgente del merge è il workpace del progetto comune e la destinazione è un workspace di un utente MERGE cerca la più recente checked-in version per ogni risorsa version-controlled nel workspace WebDAV: Versioning


Server Workspace:esempio (1) : Server Workspace:esempio (1) Si consideri un programma con I seguenti files: /projectX/makefile /projectX/main.c /projectX/defs.h Marco e Gino vogliono collaborare a questo lavoro Ognuno lavora in un diverso server workspace Crea i workspace: MKWORKSPACE /users/marco/projectX/ MKWORKSPACE /users/gino/projectX/ WebDAV: Versioning


Server Workspace:esempio (2) : Server Workspace:esempio (2) Utilizzo di version control per aggiungere i files: Workspace di marco: VERSION-CONTROL /users/marco/projectX/makefile da /projectX/makefile VERSION-CONTROL /users/marco/projectX/main.c da /projectX/main.c VERSION-CONTROL /users/marco/projectX/defs.h da /projectX/defs.h Workspace di gino: VERSION-CONTROL /users/gino/projectX/makefile da /projectX/makefile VERSION-CONTROL /users/gino/projectX/main.c da /projectX/main.c VERSION-CONTROL /users/gino/projectX/defs.h da /projectX/defs.h WebDAV: Versioning


Server Workspace:esempio (3) : Server Workspace:esempio (3) Version history di main.c: /repo/o522/v1 /repo/o522/v2 /repo/o522/v3 /repo/o522/v4 version history resource /repo/o522/v1 /repo/o522/v2 /repo/o522/v3 /repo/o522/v4 version resources /his/o522 /projectX/main.c /users/gino/ projectX/main.c version controlled resources /repo/o522/v5 /users/marco/ projectX/main.c WebDAV: Versioning


Server Workspace:esempio (4) : Server Workspace:esempio (4) main.c makefile defs.h /users/gino/projectX/ main.c, 4 makefile, 3 defs.h, 3 /users/marco/projectX/ main.c, 5 makefile, 3 defs.h, 2 3 5 WebDAV: Versioning


Client Workspace : Client Workspace Il client mantiene il controllo dello spazio dei nomi dei dati locali Il Server viene utilizzato poco Working resource La crea dopo la checkout Una locazione sul server dove si può scrivere il contenuto delle risorsa checked-out Checkin CHECKIN converte la working resource in una version resource Una version history può avere diverse working resource contemporanee WebDAV: Versioning


Esempio di Client Workspace (1) : Esempio di Client Workspace (1) Si assuma di lavorare sul file main.c: Il Client per prima cosa fa una copia di main.c usando GET Il risultato della get viene memorizzato in uno spazio locale: /{local workspace name}/main.c Poi il client fa la CHECKOUT Crea una working resource L’URL della risorsa utilizzata si trova nell’header della CHECKOUT response WebDAV: Versioning


Esempio di Client Workspace (2) : Esempio di Client Workspace (2) Il Client lavora sulla copia locale di main.c Quando ha finito il client salva I suoi cambiamenti sul server Faccio PUT Poi fa CHECKIN della working resource Rimette la versione alla working resource WebDAV: Versioning


Scopi delle Baseline : Scopi delle Baseline Quando una grande collezione di documenti viene rilasciata al di fuori dell’organizzazione che la sviluppa c’è la necessità di memorizzare con esattezza quale versione è stata rilasciata In particolare per release di software Una Baseline può memorizzare l’esatta versione di una grossa raccolta di risorse sotto version control WebDAV: Versioning


Definizione di Baseline (1) : Definizione di Baseline (1) Si tratta di uno speciale tipo di version resource che cattura lo stato dei membri version-controlled di una configurazione Una baseline history è una version history i cui membri sono baseline Le baseline hanno versioni, le quali possono cambiare WebDAV: Versioning


Definizione di Baseline (2) : Definizione di Baseline (2) Le nuove baseline vengono create attraverso il checking out e poi il checking in di un tipo speciale di version-controlled resource chiamata : version-controlled configuration Le Baselines hanno lo stesso data model delle altre risorse sotto version control Version history per baselines  baseline history Version resources  baseline Version controlled resource  version controlled configuration WebDAV: Versioning


Funzionamento Baseline (1) : Funzionamento Baseline (1) Una collezione viene messa sotto baseline control utilizzando il metodo BASELINE-CONTROL Esempio: Codice sorgente per un progetto nella collezione /project/src/ Si applica BASELINE-CONTROL a /project/src/ Si crea una nuova baseline history: Metodo BASELINE-CONTROL Crea una nuova configurazione version controlled Mette l’URL in DAV:version-controlled-configuration property of collection Memorizza le associazioni tra baseline history e collezioni WebDAV: Versioning


Funzionamento Baseline (2) : Funzionamento Baseline (2) Creare una nuova baseline: CHECKOUT version controlled configuration Rende modificabile la configurazione version controlled Prendere visione del progetto: CHECKIN della configurazione version controlled Crea una nuova baseline es., una nuova versione nel version history dei baseline Crea anche una nuova collezione… … in una porzione definita del server nel namespace … … che contiene un set di risorse version-controlled… …ognuna delle quali ha il valore della più recente checked-in version nella sua version history WebDAV: Versioning


Il server web Apache e WebDAV : Il server web Apache e WebDAV Come installare e configurare un server web Apache che implementi il protocollo WebDAV


WebDAV su server Apache : WebDAV su server Apache Guida sulla configurazione di un server web Apache che supporti WebDAV Caratteristiche: Autenticazione: LDAP Sicurezza: SSL Fonte: “Apache based WebDAV Server with LDAP and SSL” di Saquib Ali sotto licenza GNU Free Documentation License WebDAV: Apache


Software necessario : Software necessario Apache versione 1.3.x o superiore http://www.apache.org/dist/httpd/ OpenSSL Per compilare mod_ssl per apache Per maneggiare certificati SSL http://www.openssl.org/suorce/ OpenLDAP http://www.openldap.org/software/download/ WebDAV: Apache


Software necessario : Software necessario Apache è un server a moduli, al software di base si possono cioè aggiungere ulteriori funzionalità, nel nostro caso: mod_dav: per permettere l’utilizzo di WebDAV mod_auth_ldap: per permettere l’autenticazione con LDAP mod_ssl: per permettere l’utilizzo di canali protetti ssl WebDAV: Apache


Sequenza di installazione : Sequenza di installazione Installare le librerie di openLDAP Installare OpenSSL Pre-configurare Apache al fine di permettere l’installazione di mod_dav con lo script ./configure –prefix=/usr/local/apache Installazione di mod_dav Installazione di mod_auth_ldap Installazione di mod_ssl WebDAV: Apache


Sequenza di installazione : Sequenza di installazione Configurazione ed installazione di apache (con inclusione dei 3 moduli necessari) Configurazione: ./configure –prefix=/usr/local/apache \ --enable-module=ssl \ --activate-module= \ src/modules/ldap/mod_auth_ldap.c \ --activate-module=src/modules/dav/libdav.a \ --enable-shared=ssl WebDAV: Apache


Configurazione di WebDAV : Configurazione di WebDAV Una volta installati tutti i componenti si deve procedere alla configurazione di WebDAV andando a modificare alcuni file di configurazione del server Nel file di configurazione /apache/conf/httpd.conf bisogna aggiungere la seguente riga al fine di abilitare il modulo WebDAV Addmodule mod_dav.c WebDAV: Apache


Configurazione di WebDAV : Configurazione di WebDAV WebDAV utilizza un database di lock in cui salva quali risorse sono locked in un determinato istante Creare una directory in cui salvare il database Darne i permessi di accesso al server Specificare in httpd.conf la directory DAVLockDB \ /usr/local/apache/

/DAVLock WebDAV: Apache


Configurazione di WebDAV : Configurazione di WebDAV Bisogna abilitare ogni directory in cui si vuole utilizzare WebDAV aggiungendo nella entry della relativa directory nel file httpd.conf DAV On Esempio: DAV on … WebDAV: Apache


Configurazione di WebDAV : Configurazione di WebDAV Creare la directory in cui si vuole fare utilizzo di WebDAV Verificare la sintassi di httpd.con /usr/local/apache/bin/apachectl configtest Riavviare il server web /usr/local/apache/bin/apachectl restart WebDAV: Apache


WebDAV & IIS : WebDAV & IIS Configurazione di WebDAV in IIS e problemi correlati


IIS (1) : IIS (1) IIS è il server web di Microsoft Di default non è installato all’installazione del sistema operativo Integra la possibilità di supportare diversi estensioni che permettono l’utilizzo di molteplici protocolli e linguaggi WebDAV: IIS


IIS (2) : IIS (2) Alcune estensioni dinamiche devono essere appositamente installate: ASP ASP.NET Estensioni lato server di Frontpage Altre vengono già installate di default all’installazione del pacchetto WebDAV WebDAV: IIS


WebDAV : WebDAV E’ integrato nei sistemi operativi Microsoft a partire da Windows 2000 E’ supportato a partire da IIS 5.0, in IIS 4.0 doveva essere installato come estensione WebDAV: IIS


Abilitazione dell’estensione per WebDAV in IIS 4.0 : Abilitazione dell’estensione per WebDAV in IIS 4.0 Si utilizza IIS manager facendo la seguente procedura Cliccare su Web Service Extensions Cliccare sull’estensione di WebDAV: WebDAV Publishing Cliccate su Allow per abilitarla (o su Prohibit per disabilitarla) Cliccare su OK WebDAV: IIS


Client Microsoft per WebDAV (1) : Client Microsoft per WebDAV (1) Microsoft già a partire dal sistema Windows 2000 dà una particolare attenzione al protocollo WebDAV integrandolo pesantemente nei suoi software client Attuando parte dei principi di distribuzione delle risorse in rete per i quali è nato WebDAV Ecco alcuni esempi… WebDAV: IIS


Client Microsoft per WebDAV (2) : Client Microsoft per WebDAV (2) Windows 2000 e Windows XP Permettono di accedere direttamente a delle risorse WebDAV tramite sistema operativo Internet explorer (ver. 5.0 e 6.0) Office 2000 e Office XP Permettono di fare un editing distribuito delle risorse WebDAV: IIS


Abilitazione dei Client (1) : Abilitazione dei Client (1) I client Microsoft, in alcuni casi, devono essere abilitati per poter funzionare con il protocollo WebDAV Procedura: Andare in Administrative Tools e cliccare su Computer Management Fare doppio-click su Services and Applications e fare doppio-click su Services WebDAV: IIS


Abilitazione dei Client (2) : Abilitazione dei Client (2) Andare su WebClient, cliccare con il tasto destro del mouse e andare su Properties In Status type andare su Automatic e cliccare su Apply Nella sezione Service status cliccare su Start e poi su OK WebDAV: IIS


Creare una directory per le pubblicazioni (1) : Creare una directory per le pubblicazioni (1) Creare la directory, in cui si vogliono fare le pubblicazioni, in una partizione NTFS Essa deve avere i seguenti permessi Read Read and Execute List Write Modify WebDAV: IIS


Perché in una partizione NTFS? : Perché in una partizione NTFS? Un directory WebDAV deve essere creta in una partizione NTFS Se creata in una partizione FAT Posso leggere il contenuto delle risorse Non posso leggere le proprietà delle risorse WebDAV: IIS


Creare una directory per le pubblicazioni (2) : Creare una directory per le pubblicazioni (2) Creare una directory virtuale in IIS mettendo l’alias desiderato, con i seguenti permessi: Read Directory Browsing Write Indexing (opzionale): Se voglio abilitare i client a cercare una directory Nota: Per fare queste operazioni bisogna essere loggati come amministratori del sistema WebDAV: IIS


Cos’è una directory virtuale? : Cos’è una directory virtuale? Una directory virtuale è una alias, un nome facile da ricordare o da scrivere che permette di accedere a delle risorse in modo trasparente alla locazione fisica della directory in cui sono memorizzati i file L’utente usa le directory virtuali per accedere ai file di cui ha bisogno WebDAV: IIS


Perché le directory virtuali? : Perché le directory virtuali? Chi accede alla directory non sa dove e come i file sono memorizzati Gli alias che mi consentono l’accesso sono più facili e intuitivi rispetto ai nomi veri e propri Le directory fisiche possono essere collocate in modo distribuito nella rete senza che l’utente se ne accorga WebDAV: IIS


Come creare una directory virtuale? : Come creare una directory virtuale? Usando IIS Manager Andare nel directory del sito in cui voglio creare la virtual directory, andare su new e poi fare click su virtual directory Scrivere l’Alias e cliccare su next Scrivere il nome della directory fisica a cui la directory virtuale deve puntare e cliccare su next Selezionare i permessi e andare su finish WebDAV: IIS


Bug di WebDAV in IIS : Bug di WebDAV in IIS Esistono alcuni bug nella realizzazione Microsoft di WebDAV che possono creare seri problemi di sicurezza WebDAV: IIS


Bug #1 (1) : Bug #1 (1) Configurazione: Microsoft 2000 IIS 4.0 Causa: Una particolare sequenza di comandi WebDAV mal formati WebDAV: IIS


Bug #1 (2) : Bug #1 (2) Effetti: L’utilizzo della CPU al 100% Il server riprende il suo funzionamento normale solo quando viene interrotto l’arrivo di richieste WebDAV malformate Possibile attacco: Denial of Service Finche arrivano richieste mal formate IIS non può compiere il suo normale lavoro WebDAV: IIS


Bug #1 (3) : Bug #1 (3) Rimedi: Installare un particolare patch http://www.microsoft.com/Downloads/Release.asp?ReleaseID=28564 Installa service pack 2 per Windows 2000 o successivi Ulteriori informazioni: http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/ms01-016.asp WebDAV: IIS


Bug #2 (1) : Bug #2 (1) Configurazione Tutti i sistemi operativi Microsoft Effetti: Uno script web può inviare richieste WebDAV con i privilegi di ci lo ha avviato Possibili attacchi: Lo script, nell’ambito delle risorse web disponibili che l’utente possiede, può impersonare l’utente e compiere azioni a suo nome WebDAV: IIS


Bug #2 (2) : Bug #2 (2) Rimedi: Installare un particolare patch http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29129 Installare: Service pack 6a per Windows NT 4.0 Service pack 1 per Windows 2000 Ulteriori informazioni: http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS01-022.asp WebDAV: IIS


Bug #3 (1) : Bug #3 (1) Non presente nel sito di Microsoft Congigurazione: IIS 4.0 o 5.0 Estensioni di Forntpage 2000 lato server installate Causa: esecuzione di uno script ASP/ASA, con inserito nella richiesta GET la stringa "Translate:f" e con aggiungenti alla fine del’URL una serie di slash "../../../../". WebDAV: IIS


Bug #3 (2) : Bug #3 (2) Effetti: Si può visualizzare il contenuto dello script Si può visualizzare il contenuto di un file Possibili attacchi: Possibilità di trovare nei file visualizzati informazioni sull’utente e sul sistema Rimedi: Installare: Service pack 1 per Windows 2000 WebDAV: IIS


Server WebDAV minori : Server WebDAV minori Una panoramica sui principali server che supportano WebDAV


Tamino XML Server : Tamino XML Server E’ un server per documenti XML Ha le funzionalità di un database SQL, interrogabile tramite XML Mi da comunque la possibilità di memorizzare qualsiasi tipo di dato fino alla dimensione di 1Gb Ha un modulo, Tamino WebDAV Server, che mi permette l’interfaccia con il mondo WebDAV WebDAV: Server minori


Tamino WebDAV Server (1) : Tamino WebDAV Server (1) E’ basato su una struttura 3-tier Il client comunica con Apache Server tramite il protocollo WebDAV, il quale tramite i servlet Tomcat comunica con Tamino WebDAV Server Tamino WebDAV Server comunica con Tamino XML Server tramite HTTP WebDAV: Server minori


Tamino WebDAV Server (2) : Tamino WebDAV Server (2) WebDAV: Server minori


Tamino WebDAV Server (3) : Tamino WebDAV Server (3) E’ un server WebDAV di classe 2, supporta cioè il looking dei file Tramite la sua struttura interna simile a quella di un database, mi da una maggiore velocità di risposta nella ricerca di risorse tramite le proprietà WebDAV WebDAV: Server minori


Tamino WebDAV Server (4) : Tamino WebDAV Server (4) Mi permette, in accordo con il protocollo WebDAV le seguenti funzioni: Pubblicazione istantanea dei documenti su web Lavoro di gruppo Aggiunta di proprietà da parte di un client ad una determinata risorsa Gestione di un file system WebDAV: Server minori


Jigsaw : Jigsaw E’ un vero e proprio server web scritto in java E’ leggermente più lento rispetto ai concorrenti apache e IIS ma gode del vantaggio della portabilità dovuta alla scrittura del suo codice in java WebDAV: Server minori


Tomcat (1) : Tomcat (1) E’ un interfaccia che mi permette di eseguire applicazioni Java lato server che prendonono il nome di servlet Si appoggia su un server web con il quale comunica tramite il protocollo AJPV12/AJPV13 E’ più efficiente del modulo jserv per apache e mi permette di essere installato su server web Apache, IIS e Netscape WebDAV: Server minori


Tomcat (2) : Tomcat (2) L’architettura è la seguente: WebDAV: Server minori


Tomcat (3) : Tomcat (3) Funzionamento: Un client web fa una richiesta Se è un programma java, Apache lo veicola a Tomcat il quale lo esegue generando il codice WebDAV (o normale HTTP) necessario a spedire la pagina Apache lo spedisce al client Tomcat include un supporto per WebDAV che abilita l’authoring dei siti web WebDAV: Server minori


Python davserver : Python davserver E’ una collezione di classi con lo scopo di facilitare la costruzione di un server WebDAV in python Esempio: Python WebDAV server: E’ un implementazione di un server WebDAV di esempio fatta in python http://sandbox.xerox.com/webdav/ Il server si trova a quest’indirizzo http://sandbox.xerox.com:8080 WebDAV: Server minori


WebDAV Server minori : WebDAV Server minori Oracle: Internet File System Xythos: Web File Server Novell: Netware 5.1, Net Publisher Endeavors: Magi-DAV IBM: DAV4J (DeveloperWorks) DataChannel: DataChannel Server (DCS 4.1) Intraspect: 4i OpenLink: Virtuoso Hyperwave: Information Server 5.5 WebDAV: Server minori


Sicurezza : Sicurezza Autenticazione Autorizzazione


Sicurezza : Sicurezza L’utilizzo di WebDAV per condividere risorse comuni in ambito di rete fa sorgere problemi di sicurezza maggiori rispetto all’uso del solo HTTP: Autenticazione: Riuscire ad identificare con chiarezza chi deve agire su una risorsa Autorizzazione: Identificare le operazioni che possono essere fatte su una determinata risorsa WebDAV: Auten. – Autor.


Autenticazione (1) : Autenticazione (1) Il problema dell’autenticazione assume un aspetto fondamentale in WebDAV L’utilizzo di risorse comuni in ambito di rete può essere efficace solo con una corretta identificazione degli attori che saranno interessati a compiere delle operazioni sulle risorse stesse WebDAV: Auten. – Autor.


Autenticazione (2) : Autenticazione (2) Solo tramite una precisa e veritiera autenticazione è possibile mettere delle solide basi per la sicurezza: Non si permette ad intrusi di personificare una persona che in realtà non sono E’ l’unica e solida base per sviluppare un meccanismo di autorizzazione WebDAV: Auten. – Autor.


Autenticazione (3) : Autenticazione (3) Sia HTTP che WebDAV, sono due protocolli di livello applicazione nell’architettura ISO/OSI WebDAV, come estensione del protocollo HTTP, è soggetto a tutte le regole e alle possibilità di autenticazione del protocollo HTTP WebDAV: Auten. – Autor.


HTTP Basic Authentication (1) : HTTP Basic Authentication (1) La risorsa è protetta da uno username e da una password La password viaggia in chiaro sulla rete Se criptata con SSL va bene tutte le volte in cui sia sufficiente come autenticazione la sola coppia username e password WebDAV: Auten. – Autor.


HTTP Basic Authentication (2) : HTTP Basic Authentication (2) Quando il client fa una GET su una risorsa il server risponde con l’errore del client 401 (unauthorized) più un header che specifica il tipo di autenticazione e un reame HTTP/1.1 401 Unauthorized Connection: close Content-Length: 157 Content-Type: text/html Date: Fri, 29 Oct 1999 09:24:10 GMT Server: UserLand Frontier/6.1b12-WinNT WWW-Authenticate: Basic realm="Control Panel" WebDAV: Auten. – Autor.


HTTP Basic Authentication (3) : HTTP Basic Authentication (3) Il client apre una finestra in cui inserire user-name e password e fa una richiesta HTTP in cui la password è codificata in Base64 Authorization: BASIC kheSrkSlrJflvbFvaFfsgHhl user:password WebDAV: Auten. – Autor.


HTTP Digest Authentication : HTTP Digest Authentication Introdotta da HTTP 1.1 La password è spedita codificata con il metodo MD5 Esiste il problema di come memorizzare la prima volta la password nel server La Digest Authentication non è supportata da tutti i browser WebDAV: Auten. – Autor.


Autenticazione del client su canale SSL (1) : Autenticazione del client su canale SSL (1) Il server si autentica con il client tramite il suo certificato Viene instaurato perciò un canale SSL sicuro tra client e server Viene mandata dal server la richiesta di autenticazione con il metodo HTTP Basic Authentication Dall’utente vengono inserite user-name e password che permettono al client di autenticarsi WebDAV: Auten. – Autor.


Autenticazione del client su canale SSL (2) : Autenticazione del client su canale SSL (2) La password in questo caso viene trasmessa su un canale protetto Non vi è più alcuna possibilità di sniffing WebDAV: Auten. – Autor.


Usare SSL con WebDAV !!! : Usare SSL con WebDAV !!! E’ altamente consigliabile usare l’autenticazione SSL del server WebDAV necessita, per via del suo orientamento allo sviluppo collaborativo, di un canale sicuro Per proteggere la password Per evitare lo sniffing di dati WebDAV: Auten. – Autor.


Autenticazione del client tramite SSL : Autenticazione del client tramite SSL Un ulteriore passo in avanti può essere fatto con l’autenticazione SSL del client Il client viene identificato univocamente tramite un certificato Tale certificato è rilasciato, come anche quello del server, da un Certification Authority che è il garante dell’identità del client e del server WebDAV: Auten. – Autor.


Ulteriore sicurezza di autenticazione : Ulteriore sicurezza di autenticazione Si può aggiungere un ulteriore meccanismo di user-name e password Per accedere alla risorsa non basta possedere qualcosa (il certificato) Bisogna anche conoscere qualcosa (la password) I certificati possono essere salvati in particolari smart-card WebDAV: Auten. – Autor.


Autorizzazione (1) : Autorizzazione (1) Autorizzazione: chi può fare che cosa Una corretta autenticazione può permettere di sfruttare in modo positivo le proprietà di WebDAV per la gestione dell’autorizzazione Autenticazione  Autorizzazione WebDAV: Auten. – Autor.


Autorizzazione (2) : Autorizzazione (2) Gestione statica: I permessi di accesso e di modifica sulle varie risorse vengono gestiti dal sistemista del server web Gestione remota e dinamica: Sono gli stessi utenti che in remoto, in base ai loro permessi, possono gestire e modificare una struttura che specifichi i vari diritti di accesso WebDAV: Auten. – Autor.


Autorizzazione (3) : Autorizzazione (3) La capacità di WebDAV di aggiungere proprietà alle risorse è alla base della gestione dinamica della struttura di accesso: Memorizzare chi è il proprietario Memorizzazione dei permessi di un dato individuo WebDAV: Auten. – Autor.


Autorizzazione (4) : Autorizzazione (4) Purtroppo… Questo aspetto non