Applicazioni Web LNF – 4 Settembre 2008 Dael Maselli Componenti World Wide Web (Web Server, HTTP e HTML) L’interfaccia verso gli utenti Pagine dinamiche Database Dove risiedono i dati, come sono organizzati Authentication & Authorization L’autenticazione e autorizzazione degli utenti e’ oggi una problematica che necessita di essere gestita separatamente World Wide Web Web Server E’ un programma che si occupa di fornire, su richiesta di un browser, un contenuto (file) Puo’ servire pagine qualsiasi tipo di file, e’ poi compito del browser interpretarne il contenuto Per la comunicazione viene utillizzato il protocollo HTTP (HyperText Transfer Protocol) HTTP – Analisi di una connessione Richiesta del browser al server: GET /index.html HTTP/1.1 Host: www.infn.it Connection: Keep-Alive User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko) Accept: text/html, image/jpeg, image/png, text/*, image/*, */* Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5 Accept-Language: en Risposta del server al browser: HTTP/1.0 200 OK Date: Mon, 28 Jun 2004 10:47:31 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 Vary: Accept-Encoding,Cookie Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Content-Language: it Content-Type: text/html; charset=utf-8 Connection: close <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Istituto Nazionale di Fisica Nucleare</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body leftmargin="5" topmargin="0" marginwidth="5"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top"><table border="0" cellspacing="0" cellpadding="0"> [...] HTML Le pagine web sono scritte utillizzando il linguaggio HTML E’ un linguaggio di formattazione, non di programmazione Definisce la struttura di una pagina (sezioni, paragrafi, titoli, ecc) Non definisce lo stile della pagina (colori, font, ecc), per il quale si utilizza il linguaggio CSS HTML <html> <head> <title>Pagina di prova</title> </head> <body> <h1>Primo paragrafo</h1> <p> Questo &egrave; il testo del primo paragrafo </p> <h1>Secondo paragrafo</h1> <p> Questo &egrave; il testo del secondo paragrafo. Approfondisci l’HTML sul <a href=“http://www.w3.org”>sito del W3C</a> </p> </body> </html> HTML CSS I CSS, (Cascading Style Sheets) o fogli di stile definiscono l’aspetto delle parti della pagina Gli stili di una sezione vengono ereditati dalle sezioni in essa contenute Possono essere definiti in un file separato dal contenuto (pagina HTML) CSS <html> <head> <title>Pagina di prova</title> </head> <body> <h1>Primo paragrafo</h1> <p style=“font-size: 200%;”> Questo &egrave; il testo del primo paragrafo </p> <h1>Secondo paragrafo</h1> <p> Questo &egrave; il testo del secondo paragrafo </p> </body> </html> CSS CGI Il webserver oltre che servire file statici presenti su disco puo' generare pagine dinamiche E' possibile fare in modo che i contenuti serviti siano generati tramite delle applicazioni Nel caso della directory /cgi-bin/ di un sito web, ad esempio, il server esegue il file richiesto ed invia al browser l'output dell'applicazione CGI Se nella directory /cgi-bin/ del server creiamo il file prova.sh contenente: #!/bin/bash echo "Content-Type: text/plain" echo echo "La data di oggi:" date Puntanto il browser su http://sito/cgi-bin/prova.sh avremo una pagina dinamica che mostra sempre l'ora del server aggiornata Generalmente i CGI sono scritti con linguaggi piu' "furbi", come il PERL PHP Grazie al linguaggio PHP (PHP Hypertext Preprocessor) e' possibile inserire delle istruzioni direttamente nelle pagine web Questo semplifica molto le cose durante la programmazione Inoltre il PHP e' un linguaggio studiato per il Web e di conseguenza implementa molte funzioni specifiche per la generazione di pagine dinamiche PHP <html> <head> <title>Pagina di prova</title> </head> <body> <h1>Primo paragrafo</h1> <p style=“font-size: 200%;”> Questo &egrave; il testo del primo paragrafo La radice quadrata di 9 e': <?php echo sqrt(9); ?> </p> <h1>Secondo paragrafo</h1> <p> Questo &egrave; il testo del secondo paragrafo </p> </body> </html> Database Database I dati, nelle applicazioni web, vengono gestiti attraverso dei DataBase Management System, DBMS Garantiscono un’intefaccia standard con le applicazioni, detta Standard Query Language, SQL Gestiscono la struttura della memorizzazione per ottimizzare le permormance e l’utilizzo di risorse Danno garanzia di integrita’ dei dati Spesso permettono una configurazione failover, ovvero la garanzia della disponibilita’ del servizio Database – struttura dei dati (1) I dati nei database sono suddivisi in campi in ognuno dei quali risiede una singola informazione esempi di campi possono essere: nome, cognome, indirizzo, ecc I campi con informazioni relative alla stessa entita’ vengono raggruppati in record In un record possiamo trovare il nome, cognome e indirizzo della stessa persona Database – struttura dei dati (2) Tutti i record che hanno la stessa categoria di informazione e con stessa struttura di campi vengono raggruppati all’interno di tabelle l’anagrafica, che contiene un record per ogni persona a sua volta contenente sempre le stesse informazioni (nome, cogome, indirizzo, ecc) esempio: Le tabelle sono infine racchiuse in schemi Uno schema raccoglie i dati appartenenti ad una applicazione o scopo delle infomazioni, ad es: personale, stipendi, catalogo libri, ecc. Database – interfaccia L’interfaccia verso l’esterno di un database e’ il linguaggio SQL, un linguaggio standard che permette di interrogare il server Ecco un esempio di interrogazione: Richiesta dell’utente: SELECT Nome, Cognome, NumTel FROM anagrafica WHERE Congome=‘maselli’ OR Cognome=‘mazzitelli’; Risposta del server: +----------------+----------------+----------------+ | Nome | Cognome | NumTel | +----------------+----------------+----------------+ | Dael | Maselli | 0694032214 | +----------------+----------------+----------------+ | Giovanni | Mazzitelli | 0694032411 | +----------------+----------------+----------------+ Autenticazione e Autorizzazione Autenticazione Come tutti i sistemi multiutente, anche le applicazioni web possono aver bisogno del riconoscimento degli utenti La questione della autenticazione era una volta gestita internamente alle applicazioni Con conseguente proliferare di database e metodi diversi per farsi riconoscere Oggi si tende ad astrarre i sistemi autenticazione e separarli dalle applicazioni di AAI (Authentication & Authorization Infrastructure) Si creano quindi delle infrastrutture di autenticazione centralizzate Permettono di riconoscere tutti gli utenti appartenenti ad un ente Per ogni utente vengono resistrate varie informazioni che determinano le autorizzazioni che questo ha nei confronti delle applicazioni INFN AAI La Commissione Calcolo e Reti dell'INFN ha formato un gruppo per lo studio e l'implementazione di una infrastruttura di Autenticazione ed Autorizzazione per l'INFN Il lavoro e' molto complesso nonche' ambizioso, ci vorranno diversi mesi prima che sia concluso F I N E Dael Maselli [email protected]