html - INFN-LNF - Istituto Nazionale di Fisica Nucleare

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 è il testo del primo paragrafo
</p>
<h1>Secondo paragrafo</h1>
<p>
Questo è 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 è il testo del primo paragrafo
</p>
<h1>Secondo paragrafo</h1>
<p>
Questo è 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 è il testo del primo paragrafo
La radice quadrata di 9 e': <?php echo sqrt(9); ?>
</p>
<h1>Secondo paragrafo</h1>
<p>
Questo è 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]