LCFIB Jordi Girona 1-3, Mòdul B6 E-08034 Barcelona, Spain lcfib@fib.upc.es Tecnologies web Aules...

Post on 24-Jan-2016

214 views 0 download

Transcript of LCFIB Jordi Girona 1-3, Mòdul B6 E-08034 Barcelona, Spain lcfib@fib.upc.es Tecnologies web Aules...

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Tecnologies webAules d'empresa 2004 - LCFIB

Una visió global de les tecnologies i arquitectures de les aplicacions web

Aules d'empresa 2004 - LCFIB

Índex

LCFIB. Qui som? Les bases de les tecnologies web Conceptes de seguretat aplicada al web Arquitectures per aplicacions web Arquitectures complexes: J2EE vs. .NET Servidors d’aplicacions Un cas pràctic. El web i la intranet de la FIB

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

LCFIB. Qui som?

Aules d'empresa 2004 - LCFIB

Qui som? Què fem?

Laboratori de Càlcul de la FIB Uns 100 treballadors, entre becaris, col·laboradors i plantilla Oferir suport informàtic a professors, alumnes i PAS de la FIB

– Aules informàtiques

– Servidors i gestió del software

– Desenvolupament i manteniment de les aplicacions de matrícula i gestió acadèmica

– Manteniment de la Xarxa

– Web i Racó Projectes a partir de convenis amb entitats externes

(Ajuntament, Generalitat, Fundacions…)

Aules d'empresa 2004 - LCFIB

On estem?

Soterrani 1 i 2 de l’edifici B6 Finestretes d’operació del mòdul A5 i C6 Sala a l'edifici C5 (només projectes externs)

A5

C6

B6

C5

Aules d'empresa 2004 - LCFIB

Sistemes Gestió

Ofimàtica

Operadorsd’aula

Web

Lotus Notes

Gestió acadèmica

Manteniment

Xarxa

Sistemes

Simulació

Web

i2cat

PRISMA...

Estructura

Projectes

Aules d'empresa 2004 - LCFIB

Projectes realitzats al LCFIB

Aplicació "Barcelona a l’escola", per l'IMEB Intranet de Camins, Campus de Terrassa i Manresa, l’Àrea de

Relacions Internacionals i de Intercampus El web de l’Univers de la UPC i del Cercle Fiber Prototipus "Oficina mòbil inteligent" i quioscos d’informació

amb la Fundación Airtel Jocs via web per les eleccions catalanes Col·laboració amb Nortel per fer aplicacions de telefonia mòbil

de nova generació Col·laboració amb la Fura dels Baus a l'espectacle ØBS Gestió acadèmica i matrícula de la EUETIB i ESAB ...

Aules d'empresa 2004 - LCFIB

Projectes actuals

Aplicació de Convenis de cooperació educativa de la UPC Web i intranet del Cercle Fiber Col·laboració en el projecte i2cat. Projecte Dexvio Simulació de la nova terminal de l’aeroport Projecte PRISMA: Nova gestió acadèmica de la UPC Gestió d’escoles de primària i instituts pel departament

d’ensenyament de la Generalitat Auditoria del portal cat365 Gestió acadèmica via web de l’Escola de d’Expressió ...

Aules d'empresa 2004 - LCFIB

Autopropaganda

Vols venir a treballar amb nosaltres?

– Surten places de becari sovint

– Bon ambient de treball

– Facilitat per combinar-ho amb els estudis

– Utilització de noves tecnologies

– Possibilitat d’aprendre coses noves

Com assabentar-se que necessitem algú?

– Borsa de treball del web de la FIB

– Cartells als aularis

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Les bases de les tecnologies web

Aules d'empresa 2004 - LCFIB

Les bases del web

De què parlarem?

– Arquitectura del web

– Protocol HTTP

– HTML

– Servidors web

– CGI

– Pas de paràmetres

– Cookies

Aules d'empresa 2004 - LCFIB

Una mica d’història

Tim Berners-Lee, pare del web

El web va néixer al CERN l’any 1991 Compartir informació de recerca Basat en un format (HTML) i un protocol (HTTP) Desenvolupat en un NeXT Primer servidor web: Cern Primer navegador “conegut”: Mosaic

Aules d'empresa 2004 - LCFIB

Arquitectura del web

Client / Servidor

El servidor web publica una part del seu disc amb informació pública

Els navegadors es connecten utilitzant el protocol HTTP al servidor i demanen les pàgines

A les pàgines hi ha links amb URL que poden apuntar a altres màquines. Idea de hypertext

Servidor Web

URL

pàgina

Pàgines

Aules d'empresa 2004 - LCFIB

El format HTML

Format de les pàgines web Fitxer de text amb informació + marques (tags) Estàndard i independent de plataforma Idea inicial: representar l’estructura lògica del document

– Sense tags de format

– No ens importava la seva representació Evolució actual

– Tags de format

– Tags no estàndard

– Problemes per aconseguir que funcioni a tots els navegadors

Aules d'empresa 2004 - LCFIB

Quan HTML es queda curt

Javascript / VBScript

– Útil per validacions i poca cosa més. HTML Dinàmic

– Problemes d’incompatibilitat ActiveX

– Només Windows Java (Applets)

– Lent, però pot ser útil en segons quin context Flash

– Hem passat de les “pijades” a una utilitat real PDF

– Quan volem un document amb un format concret

Aules d'empresa 2004 - LCFIB

Servidors web

Escolta pel port 80 peticions HTTP Torna al servidor fitxers HTML o qualsevol format que el

navegador pugui reconèixer 2 formes de respondre a les peticions

– Tornant una pàgina estàtica de disc

– Executant una aplicació que genera la pàgina

– Passant la petició a un altre servidor Altres característiques d’un servidor

– Permet configurar les pàgines a publicar, pàgines d’error, redireccions...

– Deixa logs dels accessos per poder fer estadístiques

– Permet restringir l’accés als continguts

Aules d'empresa 2004 - LCFIB

El protocol HTTP

Protocol de comunicació entre els navegadors i servidors web

Funciona sobre TCP/IP com tots els d’Internet

El navegador fa peticions de URL (pàgines HTML o altres fitxers) i el servidor torna aquest fitxer juntament amb altres informacions complementàries

No té estat. Cada petició que fem des d’un navegador és independent de les altres.

Es molt senzill d’implementar. D’aquí el seu èxit

Aules d'empresa 2004 - LCFIB

Exemple de petició (1)

URL: http://www.servidor.com/pagina.html Pàgina HTML amb una imatge

El navegador obre una connexió al servidor www.servidor.com, port 80

Fem la petició de la pagina /pagina.html i esperem a que arribi Tanquem la connexió Analitzem la pàgina i veiem que falta la imatge Obrim una nova connexió Fem la petició de la imatge i esperem a que arribi Tanquem la petició

Aules d'empresa 2004 - LCFIB

Exemple de petició (2)

GET /pagina.html HTTP/1.0

Content-type: text/html

Contingut de la pàgina

GET /imatge1.gif HTTP/1.0

Content-type: image/gif

Contingut de la imatge

Navegador Servidor Web

Aules d'empresa 2004 - LCFIB

Més sobre les peticions

La versió més bàsica de petició, simplement demana la pàgina, tal com hem vist.

Podem enviar més informació quan fem la petició

– Versió del navegador

– Formats acceptats

– Idiomes acceptats

– Pàgina d’on venim (referer)

– Cookies i paràmetres (més sobre això tot seguit)

– Usuari i password La majoria d’aquests paràmetres es poden guardar als fitxers

de logs per treure estadístiques.

Aules d'empresa 2004 - LCFIB

Més sobre les respostes

Abans d’enviar-nos el contingut que hem demanat, ens arriben unes capçaleres informatives amb

– El codi d’error retornat (OK, no trobat, redirecció…)

– El tipus mime del document que se’ns envia

– Altres capçaleres opcionals

Amb el codi d’error, el navegador pot ensenyar-nos una pàgina informativa, redireccionar-nos a una altra pàgina…

Amb el tipus mime, el navegador sap si es tracta d’un tipus que pot ensenyar o ha d’obrir una aplicació externa (no es guia per les extensions, com windows)

Aules d'empresa 2004 - LCFIB

Problemes del HTTP

La versió més bàsica del protocol, sempre obre i tanca les connexions

– No existeix el concepte de “connectar-nos” a un servidor web igual que ens connectem a un FTP o fem un telnet a una màquina.

– Els servidors són més senzill d’implementar, ja que no guarden gens d’informació del client

Millora: utilitzant la capçalera “keep-alive”, podem fer que en una mateixa connexió ens carregui totes les imatges d’una pàgina

Versió 1.1: més millores per optimitzar les connexions i suport per cachés.

Aules d'empresa 2004 - LCFIB

CGI. Primer pas cap als continguts dinàmics

Common Gateway Interface És una forma d’executar programes (CGI) al servidor com a

resposta a les nostres peticions de pàgines Totalment estàndard: tots els servidors web tenen la

possibilitat d'executar CGI Com funciona?

– El CGI ha d’escriure la pàgina igual que si estigués escrivint per la sortida estàndard.

Com sap el servidor si una pàgina és un fitxer que pot servir directament o bé l’ha d’executar per tornar el contingut?

– Per URL, per permisos, pel directori on esta, per exensió...

Aules d'empresa 2004 - LCFIB

CGI. Pas de paràmetres

Quan omplim un formulari i enviem la informació, hem de fer arribar aquests paràmetres al servidor web

Dos formes: GET o POST

– GET: Els paràmetres surten a la URL

– POST: Els paràmetres s’envien com una segona part i no es poden guardar ni es veuen.

<FORM METHOD=“POST” ACTION=/cgi-bin/search.pl>

Consells

– GET: per consultes o coses que pot interessar tenir la URL

– POST: per fer transaccions o quan no interessa veure els parametres (per exemple, al fer un login)

Aules d'empresa 2004 - LCFIB

Petició GET real

GET /cgi-bin/search.pl/cgi-bin/search.pl?lang=0&section=0&s ch_spec=segon+cicle HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword , application/vnd.ms-powerpoint, */*

Accept-Language: es

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; COM+ 1.0.2204)

Host: www.fib.upc.es

Connection: Keep-Alive

Aules d'empresa 2004 - LCFIB

Petició POST real

POST /cgi-bin/search.pl/cgi-bin/search.pl HTTP/1.1

Accept: ….

Accept-Language: es

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; COM+ 1.0.2204)

Host: www.fib.upc.es.org

Content-Length: 37

Connection: Keep-Alive

Cache-Control: no-cache

lang=0&section=0&s ch_spec=segon+cicle

Aules d'empresa 2004 - LCFIB

CGI. Execució

El servidor detecta que ha d'executar un CGI S'executa el CGI en un nou procés, passant-li els paràmetres El CGI construeix la pàgina de resposta i la retorna al servidor

Navegador

Servidor Web

CGI

BD

URL+ param.

param.

pàginapàgina

Aules d'empresa 2004 - LCFIB

Més coses sobre els CGI

Històricament, els CGI es posen en un directori “/cgi-bin” En el món UNIX, els llenguatges més habituals per fer CGI

són

– Shell script (coses molt senzilles)

– PERL Com arriben els paràmetres a un CGI?

– GET: variable d’entorn (mida limitada)

– POST: entrada estàndard (sense limitacions) A part dels paràmetres, arriben altres valors importants com a

variables d’entorn: versió navegador, IP, cookies, usuari connectat...

Aules d'empresa 2004 - LCFIB

Entorn d’un CGI

SERVER_SOFTWARE Apache/1.3.20

SCRIPT_URI http://www.fib.upc.es/cgi-bin/env.pl

REMOTE_ADDR 193.153.175.117

SCRIPT_URL /cgi-bin/env.pl

SERVER_PROTOCOL HTTP/1.1

REQUEST_METHOD GET

QUERY_STRING parametre=prova

HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; COM+ 1.0.2204)

HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

Aules d'empresa 2004 - LCFIB

Entorn d’un CGI (2)

HTTP_CONNECTION Keep-Alive

REMOTE_PORT 2117

SERVER_ADDR 147.83.41.11

HTTP_ACCEPT_LANGUAGE es

SCRIPT_NAME /cgi-bin/env.pl

HTTP_ACCEPT_ENCODING gzip, deflate

SCRIPT_FILENAME /home/soft/apache/cgi-bin/env.pl

SERVER_NAME www.fib.upc.es

REQUEST_URI /cgi-bin/env.pl

SERVER_PORT 80

HTTP_HOST www.fib.upc.es

Aules d'empresa 2004 - LCFIB

Exemple de CGI en PERL (1)

#!/usr/local/bin/perl -w

$sendmail = '/usr/sbin/sendmail'; # where is sendmail?

$recipient = 'webmaster@fib.upc.es'; # who gets the form data?

use CGI;

$query = new CGI;

$mail_body = '';

foreach $field (sort ($query->param)) {

foreach $value ($query->param($field)) {

$mail_body .= "$field: $value\n";

}

}

Aules d'empresa 2004 - LCFIB

Exemple de CGI en PERL (2)

open(MAIL, "|$sendmail -oi -t") or die "Can't open pipe to $sendmail: $!\n";

print MAIL "To: $recipient\n";

print MAIL "Subject: Enquesta web\n\n";

print MAIL "$mail_body";

close(MAIL) or die "Can't close pipe to $sendmail: $!\n";

print "Content-type: text/html\n\n";

print <<"EOF";

<HTML>

<BODY>

<P>Gracies per participar a l'enquesta</P>

</BODY>

</HTML>

EOF

Aules d'empresa 2004 - LCFIB

CGI. Pros i contres

A favor...

– Permet fer els programes en qualsevol llenguatge

– Estàndard disponible a qualsevol plataforma

– Molt fàcil de programar

En contra...

– Rendiment pobre (crear un procés és costós)

– Qualsevol execució del CGI comença des de zero

– Inviable amb moltes peticions: no escalable

– No separem el codi de la presentació

Aules d'empresa 2004 - LCFIB

La falta d'estat

Cada petició HTTP és independent de les altres. Problema quan volem desenvolupar aplicacions

No es proporciona cap mètode per saber des del servidor quines peticions ens arriben del mateix client

Tècniques per aconseguir tenir estat:

– Cookies

– Paràmetre ID_SESSIO

– Treballar amb usuaris autentificats Altres possibles tècniques

– Adreça IP. No sempre funciona.

Aules d'empresa 2004 - LCFIB

Mites sobre la falta d’estat

“Jo treballo amb IIS i el servidor ja suporta

sessions, sense necessitar cookies”

“Per què hem de passar un identificador de sessió?

Encara que desactivem les cookies el PHP

ja té una variable amb la sessió.”

Aquestes frases ens mostren que no s’ha entès el significat de “sense estat”. Espero no sentir-les de vosaltres…

Si volem sessions, el navegador sempre ha d’enviar alguna dada en les seves peticions per identificar-se. El servidor no fa miracles

Aules d'empresa 2004 - LCFIB

Perquè no podem utilitzar la IP?

Si necessitem un identificador per identificar el client… perquè no utilitzem l’adreça IP origen?

– Cas 1: tenim una màquina multiusuari amb diferents usuaris accedint a la vegada a internet. Tots ells serien tractats com la mateixa persona. Exemple: moonrey

– Cas 2: Hi ha una màquina intermitja que fa de proxy. Automàticament, totes les peticions que fem tenen com a origen la IP del proxy

Aules d'empresa 2004 - LCFIB

Cookies

Les cookies permeten guardar al client petites quantitats d’informació i després tornar-les a enviar cap al servidor.

Un servidor ens pot enviar una cookie quan demanem qualsevol fitxer, afegint una capçalera de l’estil...

Set-Cookie: foo=bar; path=/; expires Mon, 09-Dec-2002 13:46:00 GMT

Quan fem una altra petició al mateix servidor, enviem aquesta informació en una capçalera extra

Cookie: foo=bar

Les cookies no les demana el servidor: les enviem nosaltres com qui envia un paràmetre més.

Aules d'empresa 2004 - LCFIB

Exemple de cookies per sessions.

1.- Ens connectem a un web d'una botiga de discos i aquest ens envia una cookie ID_USUARI, en cas que no la tinguem.

2.- Mentre naveguem per les pàgines, anem enviant la cookie al servidor automàticament i el servidor ens la retorna amb la data de caducitat actualitzada.

3.- Afegim 2 discos a la cistella de la compra: el servidor associarà els discos a l'ID_USUARI que li hem enviat amb la cookie.

4.- Formalitzem o no la compra.

5.- Passades un temps, aquest identificador deixarà de ser vàlid i s'esborraran totes les dades relacionades amb la sessió al servidor.

Aules d'empresa 2004 - LCFIB

Comentaris sobre l’exemple

Si hi ha diferents clients connectant-se al web al mateix temps, cadascun d’ells rebrà una cookie amb un numero aleatori, per així distingir-los.

Què passaria si la cookie no caduqués?

– El servidor sabria que ja hem accedit alguna vegada al seu web des del nostre navegador

– Podria saber les pàgines per on hem passat i oferir-nos informació més personalitzada.

– Convertiria una cookie creada per mantenir una sessió en una cookie utilizada per marketing.

Aules d'empresa 2004 - LCFIB

Més sobre cookies

Una cookie es pot robar fàcilment. Si podem monitoritzar la xarxa, podem veure quin es l’identificador de sessió i utilizarlo en un altre navegador

Solució: Cookies només en connexions segures

Si una cookie només es pot enviar al servidor que l’ha originat, que podem fer si tenim l’aplicació repartida entre vàries màquines?

Solució: Cookie de domini. Aquesta cookie s’envia a totes les màquines del domini especificat.

Aules d'empresa 2004 - LCFIB

Exemple de cookies per marketing. Primer accés

1.- Ens connectem a un web sobre economia que conté un banner d'un portal d'inversió. El banner es descarrega de ad.doubleclick.net

2.- Quan ens arriba el banner, també se'ns envia una cookie. Doubleclick es guarda quin banner ha enviat a aquesta cookie

3.- Veiem el producte que anuncia el banner i fem click a sobre. Aquest click arriba a Doubleclick, que s'apunta aquest fet a la seva base de dades i ens redirecciona a la URL que anuncia el banner

Aules d'empresa 2004 - LCFIB

Exemple de cookies per marketing (2)

1.- Ens connectem a un altre web totalment diferent però que té un banner que també ens arribar de ad.doubleclick.net

2.- Quan fem la petició per carregar el banner, estem enviant sense saber-ho la cookie que ens han donat abans, ja que es tracta del mateix servidor.

3.- El servidor sap que en un altre moment vàrem clickar sobre un banner d'un portal d'inversió i ens envia un altre sobre un altre de similar. Estem davant d'un cas de marketing dirigit.

Aules d'empresa 2004 - LCFIB

Què podem fer per evitar-ho

Bloquegem les cookies!

– Massa radical, perque hi ha webs que les necessiten com a indentificador de sessió i no ens permetran entrar si estan desactivades

Acceptar cookies amb certes restriccions

– Que no tinguin data de caducitat (de sessió)

– Que provinguin de servidors coneguts

– Si encara volem més, seguretat, només les que es trasmetin de forma segura

Aules d'empresa 2004 - LCFIB

Paràmetre ID_SESSIO

És un substitut de les cookies, amb exactament la mateixa idea de la cookie de sessió, però passat explícitament com un paràmetre o una part de la URL

És més difícil d'implementar, perquè les nostres aplicacions l'han de passar explícitament a qualsevol petició que es faci al servidor, reescrivint les URL a les pàgines.

Podem perdre la sessió si fem una petició al servidor sense l’identificador

No es guarda cap informació: el id_sessió només serà vàlid fins que tanquem el navegador

Funciona sempre, ja que no depenem d'una funcionalitat que pot estar desactivada.

Aules d'empresa 2004 - LCFIB

Autentificació dels usuaris

Moltes vegades els identificadors de sessió es donen una vegada hem autentificat l'usuari amb username i password.

Podem necessitar autentificació dels usuaris per:

– Autoritzacions: controlar els serveis als quals tenim accés depenent de qui som

– Personalització: mostrar només les coses que ens interessen

Altres formes d’autentificar els usuaris

– Autentificació HTTP bàsica (la de la pantalleta)

– Autentificació per certificat (més al capítol següent)

Aules d'empresa 2004 - LCFIB

Autentificació bàsica

Part del protocol HTTP Es pot configurar a nivell de servidor web El servidor envia un codi d'error quan accedim a una zona que

requereix autentificació que fa saltar la pantalla del navegador per demanar password

Un cop hem entrat username i password, aquesta informació viatja cap al servidor juntament amb la petició de la pàgina, codificada en base64. No s'encripta el password.

La informació username/password s'envia sempre que fem peticions al servidor que ens l'ha demanat, fins que tanquem el navegador

Aules d'empresa 2004 - LCFIB

Exemple de petició a una pàgina protegida

GET /intranet/pagina.html

401 Not Authorized

GET /intranet/pagina.html

username:password

200 OK

Contingut de la pàgina

Navegador Servidor Web

Aules d'empresa 2004 - LCFIB

Realment el password viatja en clar?

Exemple real de capçalera que s’està enviant al demanar una pàgina segura

GET /intranet/ HTTP/1.1

...

Authorization: Basic YWRtaW46bm90ZWRlam8=

Busco per internet un descodificador de Base64 i ...

> base64.exe -d YWRtaW46bm90ZWRlam8=

> admin:notedejo

Aules d'empresa 2004 - LCFIB

Autentificació bàsica. Pros i contres

Pros

– Està suportada pel protocol

– Es pot utilitzar amb pàgines estàtiques

– Ens proporciona "de gratis" un identificador de sessió, que no hem de passar ni es guarda com a cookie

Contres

– No tenim control sobre la pantalla d'accés

– És molt fàcil que ens agafin el password

– Una vegada hem entrar un usuari i un password, la única manera de fer “logout” és tancant el navegador o entrant amb un altre usuari

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Conceptes de seguretat aplicats al web

Aules d'empresa 2004 - LCFIB

Seguretat

De què parlarem?

– Conceptes bàsics de criptografia

– Comunicació segura amb clau pública i privada

– Autoritats de certificació

– El protocol HTTPS

– Autentificació d’usuaris per certificat

– Firewalls

– Possibles atacs a un web

Aules d'empresa 2004 - LCFIB

Conceptes bàsics

Autenticitat

– B ha de tenir la seguretat que les dades provenen de A Confidencialitat

– Ningú ha de poder veure les dades que A envia a B Integritat

– Ningú ha de poder interceptar el missatge i canviar-lo

A B

Aules d'empresa 2004 - LCFIB

Conceptes bàsics

La ciència que intenta aconseguir els 3 objectius anteriors és la criptografia.

La criptografia basa la seva eficiència en mètodes matemàtics de difícil resolució.

Les eines bàsiques de la criptografia són 2:

– Funcions de Hash: codifiquen un missatge de forma que no es pot tornar a l'original perquè s'ha perdut informació

– Algorismes d'encriptació: codifiquen un missatge de forma que sí podem tornar a l'original, a través d'algun tipus de clau.

Aules d'empresa 2004 - LCFIB

Funcions de hash

Generen un resum d’una llargada fixa a partir d’un missatge original. És per tant una funció irreversible

Un petit canvi al missatge original ens dóna un hash completament diferent

És quasi impossible trobar dos missatges diferents que generin el mateix hash

Algorismes

– MD5, SHA

Exemple: un sistema pot emmagatzemar el hash dels password i fer les comparacions sempre amb els hash.

Aules d'empresa 2004 - LCFIB

Algorismes de clau simètrica

Funcionen amb una clau La clau per encriptar i desencriptar és la mateixa i l’han de conèixer

emissor i receptor El nivell de seguretat de l'algorisme depèn de la llargada d'aquesta clau Algorismes:

– DES, IDEA, 3DES, RC4...

Aules d'empresa 2004 - LCFIB

Algorismes de clau pública

Tenim una clau pública i una privada personal i intransferible. Clau privada: Ens permet xifrar missatges que només es poden

desxifrar amb la clau pública Clau pública: Ens permet xifrar missatges que només es poden

desxifrar amb la clau privada Algorismes:

– RSA

Aules d'empresa 2004 - LCFIB

Clau privada vs. Clau pública

Per poder comunicar-nos amb encriptació de clau pública, la clau l'han de conèixer emissor i receptor

– Com passem la clau de forma segura?

– Necessitem tantes claus com persones amb les quals ens volem comunicar.

Els algorismes de clau pública són computacionalment molt costosos

– Què fem quan hem de transmetre molta informació?

La solució és una combinació dels 3 mètodes que hem vist fins ara.

Aules d'empresa 2004 - LCFIB

Comunicació segura

Pas 1: Fem un hash de l'original per assegurar l'integritat

Pas 2: Signem aquest hash amb la nostra clau privada per assegurar l'autenticitat. Això es una signatura digital.

Aules d'empresa 2004 - LCFIB

Comunicació segura

Pas 3: Generar una clau de sessió

Pas 4: Utilitzar un algorisme de clau simètrica per encriptar missatge+signatura amb aquesta clau de sessió. Així utilitzem un algorisme no tan costós pel gruix de la informació

Pas 5: Encriptar la clau de sessió amb la clau pública del receptor. D'aquesta forma assegurem confidencialitat, ja que només el receptor podrà desencriptar la clau.

Pas 6: Enviar tot el paquet al receptor

Aules d'empresa 2004 - LCFIB

Esquema general de la comunicació segura

Aules d'empresa 2004 - LCFIB

Conclusions a la comunicació segura

Només el receptor pot desencriptar la clau de sessió i amb ella desencriptar el missatge

Ningú pot tocar el missatge, ja que si s'aplica la funció de hash al missatge desencriptat, s'ha d'obtenir el hash que ha enviat l'emissor

El missatge ve segur del seu emissor, ja que s'ha encriptat el hash amb la clau privada de l'emissor i l'hem desencriptat amb la pública.

Moltes vegades només es fa part d'aquest procés, ja sigui la part de signatura digital o la d'encriptació. El web és un d’aquests casos

Aules d'empresa 2004 - LCFIB

HTTP

IP

TCP

SSL

IP

TCP

HTTPS

El protocol HTTPS

HTTPS és la versió encriptada de HTTP Es basa en afegir una nova capa (SSL - Secure Socket Layer)

sobre TCP/IP que permet connexions encriptades, utilitzant algorismes de clau pública i privada.

SSL és aplicable a altres protocols també

Aules d'empresa 2004 - LCFIB

Comunicació segura en web

Què ens interessa quan ens connectem a un web segur?

– Comunicació encriptada

– Assegurar-nos que ens comuniquem amb el web real

– NO és necessari que nosaltres tinguem una clau

L’establiment de la connexió: Handshaking

– Es negocia un protocol d’escriptació amb clau simètrica

– El servidor ens passa la seva clau pública

– Es passa encriptada una clau de sessió

– Encriptem les comunicacions amb aquesta clau

Aules d'empresa 2004 - LCFIB

L'autenticitat de les claus

Qualsevol persona pot generar una clau pública i una privada i passar la seva clau pública dient que és la d'una altra persona

Pringadillo.com

Clau pública (real) de Amazon

Clau pública (falsa) de Amazon

Com sabem quina és la bona?

Aules d'empresa 2004 - LCFIB

Les autoritats de certificació

Solució: les autoritats de certificació (CA) Fan de notaris: expedeixen certificats en els quals associen

una clau pública i una identitat, amb una data de caducitat Quan volem enviar la nostra clau pública a algú, el que

realment enviem és un certificat. El receptor pot comprovar a la CA si el certificat és correcte i

així assegurar-se que la clau pública correspon realment a la persona que l’ha enviat.

El client només hauria d'acceptar com a bons certificats signats per autoritats de certificació en les quals confia.

Aules d'empresa 2004 - LCFIB

Què vol dir aquesta pantalla?

El navegador no té registrada l’autoritat de certificació. Pot tractar-se d’un certificat de proves

El nom que hi ha al certificat no coincideix amb el del web, o sigui que potser no és el seu

Hauríem de desconfiar i no donar al SI sense mirar que passa

Aules d'empresa 2004 - LCFIB

Exemple de certificat en HTTPS

Així ens ensenya Internet Explorer un certificat...

Aules d'empresa 2004 - LCFIB

Un pas més: Autentificació per certificat

Els clients també poden tenir un certificat propi per assegurar la seva identitat

Un servidor segur, podem obligar a exigir certificat al client per accedir a certes parts.

El servidor ha de tenir el certificat de l’autoritat certificadora del client per poder validar

Esquema complet de la comunicació segura.

El certificat es guarda encriptat al disc dur del navegador i per utilitzar-lo ens demanarà un password (PIN) per desencriptar

El password no viatja per la xarxa: únicament el certificat

Aules d'empresa 2004 - LCFIB

Les grans preguntes sobre Certificats i HTTPS

Què vol dir que no es confia en l’autoritat de certificació que ha emès el certificat?

– Per exemple, el certificat de raco.fib.upc.es està generat per esCERT (escert.upc.es), una autoritat no reconeguda per cap navegador d’entrada

– S’ha d’instalar el certificat de l’autoritat a la nostra màquina. En aquest cas, esta a http://escert.upc.es/_certs/escert_raiz.crt

Compte! Un error d’aquest tipus també pot indicar que es tracta d’un certificat “autosignat”, es a dir, de proves. Cap web “oficial” hauria de tenir un certificat d’aquest estil.

Aules d'empresa 2004 - LCFIB

Les grans preguntes sobre Certificats i HTTPS

Vull fer proves amb un servidor segur a casa. Què he de fer?

– Per fer proves, podem utilitzar les utilitats OpenSSL (www.openssl.org) per generar certificats autosignats.

– Aquestes utilitats també permeten generar peticions de certificat que s’envien a una CA amb la idea que ens retornin un certificat vàlid signat

– Si utilitzem Apache, hem d’assegurar-nos de tenir el modul mod_ssl i dir-li on està el nostre certificat

Aules d'empresa 2004 - LCFIB

Les grans preguntes sobre Certificats i HTTPS

Com obtinc un certificat personal?

– Si el volem per fer proves, qualsevol de les grans CA, ens ofereixen certificats per 30 o 60 dies. Aquest certificat ens pot servir per encriptar mails o signar codi.

– Podem obtenir un certificat “real” de la FNMT a

http://www.cert.fnmt.es/clase2/main.htm

Per obtenir aquest certificat, serà obligatori anar “físicament” a una oficina de l’Agència Tributària.

Aules d'empresa 2004 - LCFIB

Les grans preguntes sobre Certificats i HTTPS

Què són els Applets / ActiveX signats?

– Podem utilitzar un certificat per fer la signatura d’una aplicació, per assegurar que no està manipulada i qui la proporciona

Aules d'empresa 2004 - LCFIB

HTTPS és suficient?

HTTPS es basa en els algorismes de clau pública i privada. És a dir, que hem de guardar molt bé la clau privada.

Si una persona entra al sistema on es guarda la clau privada, i l'aconsegueix, pot fer-se passar per aquest sistema

Si volem tenir un grau de seguretat pràcticament total, hem de tenir una política de seguretat per evitar accessos no controlats a la nostra xarxa. Una eina important és el firewall

Hem d’estar segurs de tenir les últimes versions dels servidors i del sistema operatiu per assegurar-nos que no puguin accedir al nostre sistema a partir d’una vulnerabilitat coneguda

– Aprofitada per hackers

– Aprofitada per cucs o virus

Aules d'empresa 2004 - LCFIB

Com ens poden atacar?

CGI o altres continguts dinàmics mal escrits, que no validen prou les entrades.

– Exemple: Paràmetres amb ../ Servidors mal configurats que permeten accés a llocs o codi

que no haurien de poder veure.

– Exemple: Índex de directoris Cross-side Javascript, que aprofiten la capacitat de que algú

introdueixi codi HTML a les nostres pàgines SQL Injection: possibilitat d’introduir paràmetres que

modifiquin una sentència SQL que executem. “Robar” sessions d’altres usuaris. DOS: peticions massives fins col·lapsar el servidor

Aules d'empresa 2004 - LCFIB

En resum

Utilizar SSL és una condició mínima quan volem un web segur.

La màxima seguretat la obtenim amb la utilització d’un certificat per part del client.

Hem de protegir la nostra màquina tant com sigui possible per tal que ningú hi pugui accedir excepte als serveis imprescindibles

Hem de tenir sempre últimes versions de tots els servidors que puguem fer servir

Hem de programar les aplicacions pensant en la seguretat: no confiar mai en que el que ens entra l’usuari és vàlid o inofensiu

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Arquitectures per aplicacions web

Aules d'empresa 2004 - LCFIB

Arquitectures per aplicacions web

De què parlarem?

– La resposta Open Source:

Apache + PHP + MySQL

– L'alternativa Microsoft:

Internet Information Server / ASP

– Java al servidor:

Tomcat + Servlets / JSP

– El que més es porta últimament

XML / XSL

Aules d'empresa 2004 - LCFIB

Per què no n’hi ha prou amb els CGI?

El model del CGI aviat es va quedar petit:

– Poca escalabilitat

– Incomoditat per generar les pàgines Com a evolució a la idea dels CGI van sortir altres formes

d'executar codi al servidor més orientades a la generació de pàgines

Característiques comunes:

– Externament funcionen igual que un CGI

– Eliminen la necessitat de crear un nou procés

– Ens proporcionen API per simplificar el treball amb sessions, paràmetres, generació de HTML...

Aules d'empresa 2004 - LCFIB

N’hi ha prou amb un servidor web?

Normalment el fet de generar pàgines dinàmiques, implica presentar informació que tenim al servidor de diferents formes, i això ens porta a treballar amb bases de dades

Totes les plataformes que comentem tenen una interfície simplificada per treballar amb BD

– JDBC

– ODBC

– accés directe a MySQL

Aules d'empresa 2004 - LCFIB

Apache

Servidor web gratuït, Open Source i multiplataforma 60% dels servidors web utilitzen Apache Estructura modular, que ens permet tenir mòduls per

pràcticament qualsevol cosa

– HTTPS

– Autentificació LDAP, bases de dades…

– Llenguatge PHP, Perl

– Connexió amb contenidors de Servlets (Tomcat/Jserv)

– … Degut a la seva popularitat, fins i tot integració amb servidors

d’aplicacions comercials

Aules d'empresa 2004 - LCFIB

Estadística dels servidors web

Resultats de NetCraft Web Survey sobre un total de 46,067,743 servidors web

Aules d'empresa 2004 - LCFIB

PHP

PHP és un llenguatge de script que es pot incorporar a Apache a través del mòdul mod_php, de lliure distribució

Idea de tenir HTML amb codi barrejat a la mateixa pàgina, que s’executa abans d’enviar-la al navegador:

codi_html

<?php codi_php ?>

codi_html

Per fer canvis, simplement modifiquem les pàgines amb un editor. No s’han de compilar

Té una sintaxi molt semblant a PERL / C En les últimes versions, s’han introduït conceptes d’orientació

a objectes, per una millor estructuració

Aules d'empresa 2004 - LCFIB

Característiques del llenguatge

En ser un llenguatge pensat exclusivament per web, ens facilita tasques molt usuals com per exemple:

– Suport per sessions amb cookies i sense

– Enviament de mails

– Creació d’imatges (no GIF, per problemes de copyright)

– Accés a bases de dades

– Accés a directoris LDAP

– Demanar pàgines a altres servidors

– Generació de PDF

– Tractament de XML

Aules d'empresa 2004 - LCFIB

PHP + MySQL

Tota aplicació web seriosa necessita una base de dades per guardar informació. PHP es va dissenyar pensant en MySQL per aquestes tasques.

MySQL és una base de dades OpenSource i gratuïta Podem escollir entre velocitat o transaccions (InnoDB) Té interfície amb Java, C, però la més popular és amb PHP Disponible tant per Linux com per Windows. Limitacions: subconjunt de SQL per consultes.

PHP també pot treballar amb altres BD, com PostreSQL, Oracle, utilitzar ODBC de Windows...

Aules d'empresa 2004 - LCFIB

Processament d’una pàgina PHP

Apache

mod_php

Petició

pagina.php

PàginaHTML

MySQL

Pàgines .php(HTML + codi PHP)

pagina .php

Aules d'empresa 2004 - LCFIB

Exemple de PHP (1)

<HTML><BODY><TABLE><?php

// Conectem al servidor de BD amb un username i password

$link = mysql_connect( "mysql.fib.upc.es", ”aules", ”empresa");

// Seleccionem la BD

mysql_select_db(”proves");

$result = mysql_query("SELECT * FROM authors");

Aules d'empresa 2004 - LCFIB

Exemple de PHP (2)

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "<tr>\n"; foreach ($line as $col_value) { print "<td>$col_value</td>\n"; } print "</tr>\n"; }

mysql_close($link);

?></TABLE></BODY></HTML>

Aules d'empresa 2004 - LCFIB

La nova versió: PHP 5

PHP es vol convertir en un llenguatge “seriós” orientat a objectes. (Vol convertir-se en una mena de Java)

– Classes abstractes

– Mètodes privats

– Herència

– Tractament d'excepcions

SQLite: possibilitat de tenir una base de dades sense haver de tenir un servidor a part. (Vol convertir-se en Access)

Tractament de XML basat en libxml2

Aules d'empresa 2004 - LCFIB

PHP Nuke

Eina gratuïta per gestió de portals, que permet gestionar-los 100% des del web sense haver de tocar codi HTML

Utilitza PHP i MySQL Exemple de fins on podem arribar utilitzant només PHP Ens proporciona

– Gestor de contigut

– Fòrums

– Weblog

– Enquestes… Arquitectura oberta amb possibilitat d’afegir-hi plugins S’ha fet tan popular que li han sortit imitadors

Aules d'empresa 2004 - LCFIB

Més al voltant de PHP

Llibries útils en PHP

– Smarty: sistema de plantilles, en que tenim un fitxer amb el codi HTML i etiquetes i un altre amb el codi PHP

– FPDF: llibreries per generar PDF 100% PHP, que no necessiten cap mòdul addicional instal·lat al servidor

– AMFPHP: comunicació de Flash al client amb un servidor web amb suport per PHP

– NuSOAP: programació de web services amb PHP. Veurem que son exactament més endavant

Eines de desenvolupament

– PHPEdit, un editor OpenSource fins i tot amb debugger

Aules d'empresa 2004 - LCFIB

Conclusions Apache + PHP + MySQL

A favor...

– Aquesta arquitectura muntada en un sistema Linux ens permet tenir una plataforma per aplicacions web bastant potent a cost zero.

– En tractar-se de software lliure, no disposem d’un servei tècnic, però a canvi hi ha una gran quantitat de documentació al web.

– Senzill de desenvolupar En contra

– Una aplicació molt gran feta en PHP pot ser difícil de mantenir, ja que no tindrà una estructura molt clara

– Difícil separar codi de presentació

Aules d'empresa 2004 - LCFIB

Microsoft Internet Information Server

Servidor web de la plataforma Windows NT/2000/XP Proporciona també FTP, SMTP (correu), NNTP, HTTPS Ens ve gratis amb el sistema operatiu Fàcilment configurable a través de la “management console” Suport natiu per ASP, que veurem tot seguit, però també es

pot afegir suport per altres llenguatges, com PHP, JSP… afegint les DLL corresponents

Gran integració amb el sistema:

– autentificació dels usuaris a partir dels de Windows

– accés a les connexions ODBC definides al sistema

Aules d'empresa 2004 - LCFIB

ASP

Active Server Pages: es barreja codi HTML amb Visual Basic (o algun altre llenguatge), que s'executa en el moment d'enviar la pàgina al client.

Tecnologia veterana: va aparèixer amb la primera versió de Internet Information Server per NT

És la tecnologia més utilitzada en el món Microsoft, ja que NT no té la facilitat de UNIX per utilitzar diferents llenguatges de script.

Permet fer crides a objectes COM per separar les tasques més complexes de la presentació

Diferents eines de desenvolupament, tant de Microsoft com d’altres (Dreamweaver UltraDev, Visual Studio…)

Aules d'empresa 2004 - LCFIB

El framework ASP

4 Objectes bàsics per les aplicacions

– Request conté informació sobre la petició que ens arriba des del navegador (paràmetres, cookies…)

– ResponseEns permet generar la resposta

– Session

Ens permet guardar variables associades a la sessió, que utilitza cookies de forma transparent

– Server

Ens permet crear nous objectes COM.

Aules d'empresa 2004 - LCFIB

Exemple de ASP (1)

<%@ LANGUAGE = VBScript %>

<HTML>

<BODY>

<%

Dim oConn

Dim oRs

Dim Index

Set oConn = Server.CreateObject("ADODB.Connection")

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("authors.mdb")

Set oRs = oConn.Execute("SELECT * From authors")

%>

Aules d'empresa 2004 - LCFIB

Exemple de ASP (2)

<TABLE border = 1>

<% Do while (Not oRs.eof) %>

<TR>

<% For Index=0 to (oRs.fields.count-1) %>

<TD> <% = oRs(Index)%> </TD>

<% Next %>

</TR>

<% oRs.MoveNext

Loop %>

</TABLE>

<% oRs.close

oConn.close %>

</BODY>

</HTML>

Aules d'empresa 2004 - LCFIB

ASP.NET

Evolució de la plataforma .ASP No és 100% compatible amb el codi anterior Separa codi i presentació

– Pàgina HTML + Tags de WebForms

– Codi (en Visual Basic o altres) Permet configurar de forma declarativa

– mètode d’autentificació

– autoritzacions Concepte d’aplicació més que pàgines disperses i

configuració de les aplicacions amb fitxers XML

Aules d'empresa 2004 - LCFIB

Més sobre ASP.NET

Permet programar una pàgina web com si fos una aplicació windows

– Dissenyem la pàgina HTML, però en lloc dels elements habituals als formularis, tenim els tags de WebForms, que s’executen al servidor i generen HTML estàndard.

– La part del codi s’estructura com a respostes als events generats pels elements de WebForms

La pròpia plataforma s’encarrega de passar els paràmetres necessaris per poder fer el tractament dels events al servidor i generar la pàgina de resposta.

No es barreja mai el codi amb l’HTML

Aules d'empresa 2004 - LCFIB

HTML d’una pàgina ASP

<html>

<body>

<form runat="server">

<p>

<asp:Label id="Label1" runat="server">Qui ets?</asp:Label>

</p>

<p>

<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

</p>

<p>

<asp:Button id="Button1" runat="server" Text="OK”

onclick="Button1_Click">

</asp:Button>

</p>

</form>

</body>

</html>

Aules d'empresa 2004 - LCFIB

Codi d’una pàgina ASP.NET

<%@ Page Language="VB" %>

<script runat="server">

Sub Button1_Click(sender As Object, e As EventArgs)

Label1.Text = "Hola, " & TextBox1.Text

End Sub

</script>

Voleu fer proves amb ASP.Net?

– WebMatrix. Un entorn de desenvolupament que només ocupa 1Mb (i es de Microsoft!)

Aules d'empresa 2004 - LCFIB

Conclusions sobre ASP

ASP és un sistema madur, amb una gran base de desenvolupadors

Hi ha hagut extensions del framework de ASP a altres plataformes i llenguatges, però la plataforma completa segueix estant lligada a Windows.

Sistema més senzill de fer aplicacions web a plataforma Windows, sense necessitar més infrastructura que la que ja porta de sèrie.

L’evolució de ASP cap ASP.NET marca el futur d’aquesta plataforma.

Aules d'empresa 2004 - LCFIB

Servlets

Framework per generar pàgines web des de classes Java Tenim accés a la petició, la resposta, la sessió i a paràmetres

d’aplicació (Similar a ASP) Anem escrivint la pàgina des del programa, generant el codi

HTML per programa (Similar a un CGI) Necessitem un contenidor de servlets, que executa una

màquina virtual Java i que pot executar-se:

– Al mateix procés que el servidor de web

– En un procés o màquina a part Accés a totes les llibreries de Java

– JDBC, mail, XML, PDF...

Aules d'empresa 2004 - LCFIB

Exemple de Servlet (1)

import java.io.*;

import java.sql.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class ServletConsulta extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException

{

response.setContentType("text/html");

PrintWriter out = response.getWriter();

Aules d'empresa 2004 - LCFIB

Exemple de Servlet (2)

out.println("<HTML>");

out.println("<BODY>");

out.println("<TABLE border=1>");

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn=

DriverManager.getConnection("jdbc:odbc:authors");

Statement stmt=conn.createStatement();

ResultSet rset=

stmt.executeQuery("SELECT * FROM AUTHORS");

int cols=rset.getMetaData().getColumnCount();

Aules d'empresa 2004 - LCFIB

Exemple de Servlet (3)

while(rset.next()) {

out.println("<TR>");

for (int i=1;i<=cols;i++) {

out.println("<TD>"+rset.getString(i)+"</TD>");

}

out.println("</TR>");

}

out.println("</BODY>");

out.println("</HTML>");

rset.close();stmt.close();conn.close();

} catch (Exception e) {

out.println(e.toString());

}

}

}

Aules d'empresa 2004 - LCFIB

JSP

JSP és l'equivalent a ASP en Java. Permet cridar altres classes Java, on hi haurà el gruix del codi.

Les JSP fan de vista, amb un mínim de codi. Per exemple...

<jsp:useBean id="cart" scope="session” class="session.Carts” />

</jsp:useBean>

No s’interpreta el codi cada vegada. La primera invocació fa que es compili la pàgina i es converteixi en un servlet.

Els contenidors de servlets també ens permeten executar JSP (sempre que tinguem el compilador de Java)

Aules d'empresa 2004 - LCFIB

Servidor Web JVM

.class

URL+ param.

pàgina

Contenidors de servlets / JSP

Servidor Web

BD

.class

JVM

Servidor al mateix procés

Servidor en un procés a part

JDBC

JDBC

Aules d'empresa 2004 - LCFIB

Exemple amb JSP (1)

<%@ page language="java" import="java.sql.*" %>

<HTML>

<BODY>

<%

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn=

DriverManager.getConnection("jdbc:odbc:authors");

Statement stmt=conn.createStatement();

ResultSet rset=

stmt.executeQuery("SELECT * From authors");

int cols=rset.getMetaData().getColumnCount();

%>

Aules d'empresa 2004 - LCFIB

Exemple amb JSP (2)

<TABLE border = 1>

<% while(rset.next()) { %>

<TR>

<% for (int i=1;i<=cols;i++) { %>

<TD> <%= rset.getString(i) %> </TD>

<% } %>

</TR>

<% } %>

</TABLE>

<% rset.close();

stmt.close();

conn.close(); %>

</BODY>

</HTML>

Aules d'empresa 2004 - LCFIB

La idea de Tag Libs

JSP permet declarar nous tags per posar a les nostres pàgines i associar-los a codi java, de forma més transparent que amb “useBean”

Podem aconseguir una molt més gran separació entre presentació i codi.

D’alguna forma ens permeten crear-nos el nostre propi llenguatge de script que barrejarem a les nostres pàgines

Per una llista de Tag Libs ja programats...

– http://jakarta.apache.org/taglibs/ Hi ha una llibreria estàndard (JSTL), però no inclosa a

l’especificació de JSP

Aules d'empresa 2004 - LCFIB

Exemple de pàgina amb Tag Libs

<sql:driver var="dataSource"

driver="sun.jdbc.odbc.JdbcOdbcDriver” url="jdbc:odbc:authors">

<sql:query var="authors" dataSource="$dataSource">

SELECT * FROM Authors

</sql:query>

<table>

<jc:forEach var="row" items="$authors.rows">

<tr>

<td><jc:expr value="$row.Au_ID"/></td>

<td><jc:expr value="$row.Author"/></td>

<td><jc:expr value="$row.YearBorn"/></td>

<td>

</jc:forEach>

</table>

Aules d'empresa 2004 - LCFIB

Aplicacions JSP/Servlet: Web applicacions

Separarem en una estructura de directoris...

– Pàgines estàtiques i JSP

– Classes Java que s’executen com a servlets

– Classes Java d’utilitats (JavaBeans) o Taglibs Configurarem l’aplicació al fitxer web.xml…

– Paràmetres d’inicialització

– Tipus mime

– Mapejos de URL a servlets

– Usuaris, grups i autoritzacions Empaquetarem tot aixo en un fitxer .WAR (Web Application

Archive)

Aules d'empresa 2004 - LCFIB

Arquitectura MVC aplicada a Java

MVC es una forma de separar el codi de la presentació que es basa en tenir 3 components

– El model, que representa l’aplicació en sí

– Les vistes, que presenten aquestes dades

– El controlador, que s’encarrega d’instanciar les classes del model i presentar les vistes correctes

Tot i ser una estructura pensada per aplicacions amb interfícies gràfiques, és perfectament extensible a aplicacions web

ModelJavaBeans

VistaJSP

ControladorSerlvet

Aules d'empresa 2004 - LCFIB

Del model “senzill” al model MVC

Aules d'empresa 2004 - LCFIB

Forçant MVC: Struts

Struts és un framework que ens permeten forçar les nostres aplicacions a utilitzar MVC

– Proporciona un servlet controlador configurable amb un fitxer XML amb les accions a executar per cada una de les URL (les Action Classes)

– Totes les peticions van a aquest servlet

– Les Action classes actuen sobre les classes Java que formen el model, que son les que realment fan la feina

– A les vistes, ens proporciona tags que ens ajuden a fer vistes multiidioma i també validar les entrades, a l’estil dels WebForms de ASP.NET

Aules d'empresa 2004 - LCFIB

Més frameworks, llibreries i utilitats

Velocity. Sistema de plantilles en Java uPortal. Framework per construir portals. De per si ja

constitueix un sistema complet amb gestió d’usuaris i agregació de continguts.

Hibernate. Un dels molts motors de persistència existents, que ens permet guardar els nostres objectes en una base de dades relacional

iText. Generació de documents en PDF

Eclipse. IDE per Java molt complet, amb possibilitat de plugins per diverses tecnologies.

Aules d'empresa 2004 - LCFIB

Tomcat

Contenidor de servlets, però també pot funcionar com a servidor web en entorns de desenvolupament

Projecte de la mateixa gent de Apache. També és gratis

Implementació de referència: és el primer en suportar les noves especificacions de Servlets i JSP

Pot funcionar conjuntament amb IIS, Apache o altres servidors web, com a un procés a part i fins i tot en una màquina diferent

Aules d'empresa 2004 - LCFIB

Alternatives a Tomcat

JRUN

– Abans només servidor de servlets i ara servidor J2EE complet, ara distribuït per Macromedia

Resin

– Competència directa de Tomcat, segons sembla amb millor rendiment

Jetty

– Mini servidor de servlets pensat per incrustar-lo en altres aplicacions

Qualsevol servidor que suporti la plataforma J2EE, si estem disposats a assumir els recursos que necessiten

Aules d'empresa 2004 - LCFIB

Conclusions sobre Servlets/JSP

JSP és una còpia descarada de ASP, però que no es restringeix a plataforma windows

S’ha convertit en un estàndard amb molta acceptació JSP i servlets són 100% equivalents. Es tracta de la mateixa

tecnologia amb diferents formes d’utilització Idea de taglibs per estendre el comportament molt bona Suport per fer aplicacions estructurades

– Frameworks per MVC, plantilles, portals

– Empaquetat d’aplicacions independents Llibreries de qualsevol cosa: busqueu abans de desenvolupar! Dintre de la plataforma J2EE, que veurem més endavant

Aules d'empresa 2004 - LCFIB

XML / XSL

Aquesta arquitectura el que pretén és generar pàgines que es puguin veure en qualsevol tipus de navegador

La idea bàsica és separar les dades de la presentació.

– XML: guarda les dades a presentar

– XSL: guarda la forma de presentar-les, que serà diferent en funció del dispositiu de sortida.

Existeixen llibreries per tractar XML/XSL en PHP, Java, ASP i altres llenguatges i plataformes. No es tracta de cap substitut de les tecnologies anteriors.

Aules d'empresa 2004 - LCFIB

Què és exactament XML?

És una forma de representar informació estructurada en un fitxer de text, amb etiquetes similars a les de HTML

XML no és cap substitut de HTML. Només representa informació

Disposem de parsers que analitzen aquest fitxer i ens permeten accedir a la informació de forma senzilla

Per què es pot utilitzar?

– Com a format per guardar informació estructurada

– Format d’intercanvi entre dos sistemes diferents

– Format intermig quan encara no sabem per quin dispositiu hem de formatejar les dades

Aules d'empresa 2004 - LCFIB

Exemple de document XML

<?xml version="1.0" encoding="ISO8859-1" ?><CATALOG> <CD> <TITLE>BSO Amelie</TITLE> <ARTIST>Yann Tiersen</ARTIST> <PRICE>16.00</PRICE> <YEAR>2001</YEAR> </CD></CATALOG>

Tots els tags que s’obren es tanquen sense superposar-se És “case sensitive” Els tags van entre “<“ i “>” i els atributs entre cometes Tot el document ha d’estar dintre d’un tag

Aules d'empresa 2004 - LCFIB

Grans preguntes de XML

Quines etiquetes estan permeses a XML? Les mateixes de HTML?

– NO. XML és només el format en el que s’han d’escriure les etiquetes, però les etiquetes poden ser qualsevols. De fet, XML és més un meta-llenguatge que un llenguatge

En el futur XML substituirà HTML?

– NO. XML no té forma de dir l’aspecte o forma de presentació, que es el que esperem d’una pàgina HTML. Només són dades

XML és el format perfecte per guardar les dades?

– NO. Normalment, el millor sistema segueixen sent les bases de dades

Aules d'empresa 2004 - LCFIB

XML: un món de sigles

DTD: És l’estructura que ha de seguir un fitxer XML per ser correcte. Indica quines etiquetes són possibles, quins atributs pot tenir cada etiqueta, quina estructura han de tenir aquestes etiquetes… Són com regles gramaticals.

– Un document vàlid, compleix un DTD

– Un document ben format, simplement segueix les normes de XML

XSL / XSLT: Fulls d’estil i transformacions per XML. L’aplicació de XSLT sobre un document XML ens permet donar-li un aspecte, i convertir-lo per exemple, en una pàgina HTML o un document WML per mostrar-lo a través de mòbil.

Aules d'empresa 2004 - LCFIB

Més conceptes relacionats

XHTML. HTML amb sintaxi de XML. No és cap nou llenguatge, és simplement que per considerar HTML com un subconjunt de XML, hem de ser molt més estrictes amb la sintaxi.

XPath. És la forma que tenim de referir-nos a parts del documents XML: branques completes, elements concrets… És imprescindible quan hem de fer tractaments de l’arbre, per especificar a quina part ens referim

namespace. Com que a XML ens podem inventar les etiquetes, és una forma d’indicar que certes etiquetes estan relacionades.

Aules d'empresa 2004 - LCFIB

Exemple de XSLT / Xpath / namespaces

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr><th>Title</th><th>Artist</th></tr> <xsl:for-each select="CATALOG/CD"> <tr> <td><xsl:value-of select="TITLE"/></td> <td><xsl:value-of select="ARTIST"/></td> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet>

Aules d'empresa 2004 - LCFIB

SAX / DOM

Els documents XML es poden processar de dos formes:

– Llegint el fitxer i creant un arbre en memòria (DOM)

– Generant uns events cada vegada que el parser troba un determinat element al document (SAX)

Treballar amb DOM ens permet manipular de forma molt senzilla el document, accedir a la part que vulguem i transformar-lo

Treballar amb SAX és molt més eficient i per exemple és el sistema ideal si tenim un servidor que ha de transformar molts documents.

Aules d'empresa 2004 - LCFIB

Com funciona una aplicació XML/XSL?

S’obté el document XML

– fitxer XML

– informació d’una BD obtinguda com a document XML

– ... S’obté el full d’estil XSL (normalment un fitxer)

– A partir de la informació continguda al XML

– Segons el tipus de client S’apliquen les transformacions corresponents i s’obté la

pàgina resultat, sigui aquesta WML, XHTML o una altra variant de XML.

També podem transformar el fitxer XML en el que volguem per programa, sense fulls d’estil.

Aules d'empresa 2004 - LCFIB

Què necessitem per treballar amb XML?

Java / C++

– Xerces / Xalan (http://xml.apache.org) ASP

– Microsoft XML Parser que ve amb Explorer a partir de la versió 5.0

PHP

– Actualment, s’ha de compilar PHP amb el parser expat (http://www.jclark.com/xml)

També tenim suport per PERL, Phyton, PL/SQL...

Aules d'empresa 2004 - LCFIB

Conclusions sobre XML

El fenomen XML sembla de vegades més una qüestió de marketing que de necessitats reals.

No hem d’oblidar que en el fons no és més que un format que ens permet una manipulació i transformació fàcil

Hem d’utilitzar XML per web?

– Tenim dades que no podem obtenir com XML?

– Podem generar XML fàcilment?

– HTML no és XML. Si el que volem transformar són pàgines web que ja tenim amb tècniques pròpies de XML, tindrem problemes

És una bona solució per intercanvi de dades

Aules d'empresa 2004 - LCFIB

Altres arquitectures alternatives

ColdFusion

– Va ser un dels productes pioners

– Servidor propi i un llenguatge propi: CFML

– Potent, però totalment integrat amb la presentació Apache mod_perl / mod_python

– Moduls d’apache que ens permeten integrar els llenguatges PERL i Python al servidor, a l’estil del Visual Basic a IIS

– Pas intermig entre els CGI i PHP, ideal pels que ja dominaven algun d’aquests llenguatges

...

Aules d'empresa 2004 - LCFIB

Conclusions

Solucionen el problema de rendiment dels CGI i ens proporcionen unes API o ens faciliten el procés de creació de les pàgines

Hi ha solucions més estàndard i altres més basades en plataformes concretes. Hem de triar amb compte.

Són una bona solució per la gran majoria de les aplicacions web a les que ens puguem enfrontar. No hem d’oblidar-ho.

Encara són un model excessivament limitat per plantejar-nos grans aplicacions que poden ser crítiques.

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Arquitectures complexes

Aules d'empresa 2004 - LCFIB

Un canvi de filosofia

Fins ara ens hem plantejat el desenvolupament de contingut dinàmic des del punt de vista web

Quan ens estem plantejant una aplicació més gran, per exemple, un sistema de banca on-line, hem de pensar d’una altra forma

Pàgines webPàgines

dinàmiques

AplicacióAplicació ambinterfície web

Aules d'empresa 2004 - LCFIB

Arquitectura de 2 capes

Les aplicacions tradicionals client servidor són de 2 capes: per una banda, el client amb el codi de l’aplicació i el servidor amb les dades

El codi s’executa al client Qualsevol canvi s’ha de distribuir i instal·lar a tots els clients

BDPrograma

client

Aules d'empresa 2004 - LCFIB

Arquitectura de 3 capes

Dividim l’aplicació en 2 parts.

– Lògica de l’aplicació

– Client Idea de thin client. Els usuaris tenen un client universal o

molt reduït: el gruix de l’aplicació està a la capa intermitja Molt més fàcil d’actualitzar versions. Menys cost de gestió Les aplicacions web són sempre de 3 capes.

Servidor Web BD

Aules d'empresa 2004 - LCFIB

Model general d’aplicacions de 3 capes

BD

Lògicade negoci

Clients no web

Presentació

Altressistemes

Aules d'empresa 2004 - LCFIB

Més sobre les arquitectures de 3 capes

Una aplicació complexa pot necessitar clients web i clients no web, com per exemple clients Windows, Java, WAP…

Volem també que els components de l’aplicació es puguin distribuir de forma flexible, que puguin estar en diferents màquines per si una falla o per distribuir la càrrega.

Un servidor web es queda curt per executar aquest tipus d’aplicacions. Necessitem un servidor d’aplicacions

Igual que tenim estàndards per aplicacions web (ASP, JSP, CGI) també tenim estàndards per l’arquitectura completa.

– Arquitectura Java: J2EE

– Arquitectura Microsoft: .NET

Aules d'empresa 2004 - LCFIB

Arquitectura J2EE

Arquitectura completa d’aplicacions de n-capes basat en la plataforma Java

Idea principal: aplicacions a la capa intermitja, accessibles a través de thin clients (normalment, navegadors web)

– Components per la lògica de negoci

– Capa de presentació

J2EE és un Model de programació

– Com hem de desenvolupar les aplicacions? J2EE és una Plataforma:

– Què necessitem per executar-les?

Aules d'empresa 2004 - LCFIB

Elements del Model d’Aplicació

Model de components

– EJB (Enterprise Java Beans) Capa de presentació

– Servlets /JSP Protocol per comunicar components remots

– RMI / IIOP Accés a bases de dades o altres fonts d’informació

– JDBC (Bases de dades relacionals)

– JNDI (Serveis de directori)

– JavaMail (Correu electrònic)

– JTA (Transaccions)

Aules d'empresa 2004 - LCFIB

Esquema de l’arquitectura

Aules d'empresa 2004 - LCFIB

Què és un EJB?

Són components de l’aplicació que s’executen a la capa intermitja i que executen la lògica de negoci

Han d’executar-se en un servidor de EJB, que els hi proporcionarà serveis transaccionals, d’accés a dades, de missatges…

Des del client ens relacionem amb el servidor EJB, no directament amb les classes que conté.

Un contenidor de EJB es comporta de manera similar a una base de dades: contactem amb ell per accedir als components que conté, deixant a les seves mans la forma en que els administra.

Aules d'empresa 2004 - LCFIB

3 classes de EJB

Session beansSón operacions que invoca el client, no tenen estat.

Entity beansRepresenten informació. Un canvi al seu estat es reflexa a base de dades

– BMP (Bean Managed Persistence): Nosaltres mateixos fem l’accés a la Base de Dades.

– CMP (Content Managed Persistence): Deixem que el contenidor s’encarregui de la persistència

Message-driven beansEns serveixen per comunicació assíncrona

Aules d'empresa 2004 - LCFIB

Característiques del Model d’Aplicació

J2EE intenta que gran part del que fins ara s’havia de programar explícitament s’especifiqui de forma declarativa en fitxers descriptors XML i ho controli el servidor

– Seguretat: quins usuaris poden accedir a cada EJB i que poden executar

– Transaccions: quins components poden utilitzar transaccions i com les implementen

– Persistència: si un component ha de ser persistent, com es mapeja en una base de dades

Aquestes característiques es podran variar en el moment d'instal·lar l’aplicació al servidor d’aplicacions

Aules d'empresa 2004 - LCFIB

EJB i Usuaris

Com sabem quin usuari ens executa els EJB? Què significa exactament que un EJB suporti transaccions?

Quan executem un EJB li passem un context d’execució en el que consta l’usuari que l’esta executant

Ens hem d’imaginar el servidor EJB com una base de dades. Sabem qui es connecta i quan fa vàries modificacions, podem agrupar-les en transaccions

Normalment, l’usuari ens arribarà via web. La capa de presentació el passarà via context a les EJB

Aules d'empresa 2004 - LCFIB

Exemple. Botiga de llibres

Aules d'empresa 2004 - LCFIB

Pros i contres de J2EE

En contra...

– Arquitectura complicada

– No gaire rendiment, especialment si confiem en la persistència basada en el contenidor

– Moltes restriccions A favor

– Estàndard. Una aplicació feta utilitzant J2EE segueix una sèrie de normatives que fan que sigui “fàcil” de modificar per un altre desenvolupador

– Molts servidors on es poden instalar aquestes aplicacions “sense” (amb moltes cometes) modificacions

Aules d'empresa 2004 - LCFIB

Arquitectura Windows .NET

Arquitectura de n-capes de Microsoft

Es basa en:

– Un model de components: .NET Components

– Un nou llenguatge: C# (però no exclusivament)

– Un protocol per invocació de serveis: SOAP

– Tecnologia per generar pàgines: ASP.NET

Anteriorment, Microsoft havia intentat crear una arquitectura anomenada DNA, basada en DCOM com a protocol, però aquest sembla un intent més seriós

Aules d'empresa 2004 - LCFIB

Components .NET

El model d’objectes de la plataforma .NET es basa CLR, una llibreria comuna de tipus per tots els llenguatges suportats per la plataforma.

Els objectes es generen en un codi intermig anomenat MSIL, similar al bytecode de Java.

La CLR (common language) executa els programes que estan en MSIL passant-los a llenguatge natiu abans d’executar-los (no exactament el mateix que un JIT)

Els components .NET són els substituts dels .COM, tot i que hi ha wrappers que ens permeten enllaçar ambdues tecnologies

Porten incorporat un sistema de versió, per evitar problemes de DLL

Aules d'empresa 2004 - LCFIB

Components .NET i C#

C# és una evolució de C++ molt similar a l’evolució de C++ que representa Java.

És el primer llenguatge pensat específicament per la plataforma .NET.

El resultat de compilar un programa fet en C# és codi MSIL, exactament igual que la resta de llenguatges .NET

Gràcies a que tots els programes s’executen a traves de CLR, hi pot haver un alt grau d’integració entre llenguatges

– Java: un sol llenguatge, múltiples plataformes

– .NET: una sola plataforma, molts llenguatges

Aules d'empresa 2004 - LCFIB

.NET multiplataforma?

Per què un llenguatge intermig si només donem suport a plataforma windows?

– Aconseguim un entorn d’execució controlada

– Obtenim una gran interacció entre diferents llenguatges, per exemple, herència entre VBasic i C#

Podem fer que .NET sigui multiplataforma?

– http://www.go-mono.com. Algú s’anima?

– Projecte liderat per Miguel de Icaza, creador del gnome

Aules d'empresa 2004 - LCFIB

SOAP

SOAP és un protocol per invocació remota d’objectes basada en XML

La idea principal és que és independent del transport, tot i que ara mateix s’utilitza sobre HTTP

– Petició normal HTTP passant com a paràmetre a una estructura XML amb la invocació

– Retorna un document XML amb el resultat

– No necessita cap servidor especial

– Pot travessar firewalls Ha tingut acceptació, fins i tot fora de la plataforma .NET, ja

que és independent de la plataforma.

Aules d'empresa 2004 - LCFIB

Web Services. La paraula de moda

Què són el Web Services?

– Són components remots pensats per ser invocats via SOAP.

A la plataforma .NET, qualsevol component pot convertir-se fàcilment en un Web Service, utilitzant ASP.NET

– Es crea un fitxer .asmx servit per IIS

J2EE no està preparat d’entrada. S’hi ha afegit APIs per fer crides SOAP a través de JAX-RPC

Aules d'empresa 2004 - LCFIB

Web Services i la infrastructura necessària

Només amb el que hem dit fins ara, la idea de Web Services queda una mica coixa. Ens faltaria...

– WSDL Ens permet descriure els mètodes que té el servei.

– UDDI directoris en els que podem registrar els serveis.

– ebXMLdefineix formats de documents que s’haurien de fer servir en les transaccions electròniques

Aules d'empresa 2004 - LCFIB

Conclusions

Llenguatge

Intèrpret

Pàgines dinàmiques

Components

Web services

Accés a BD

J2EE

Java

JRE

JSP

EJB

SOAP

JDBC

.NET

C#, VB...

CLR

ASP.NET

.NET Components

ADO

Web services

Aules d'empresa 2004 - LCFIB

Conclusions

Tant J2EE com .NET ofereixen una gran complexitat. És important primer de tot plantejar-se si val la pena o si podem quedar-nos només amb una part (JSP/ASP.NET únicament)

Si les comparem detingudament, totes dues propostes són en el fons bastant semblants.

Les arquitectures de 3 capes completes ens ofereixen un escenari molt més complex que les pàgines dinàmiques

És molt important tenir una arquitectura estàndard per no haver de llençar l’aplicació desenvolupada si canviem de plataforma i per interactuar amb d’altres.

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

Servidors d’aplicacions

Aules d'empresa 2004 - LCFIB

Servidors d’aplicacions

De què parlarem?

– Servidors d’aplicacions i servidors web

– Característiques que haurien de tenir

– Arquitectures per alta disponibilitat

– Alguns productes disponibles al mercat i les seves característiques

Aules d'empresa 2004 - LCFIB

Què és un servidor d'aplicacions?

Definició àmplia:

Un servidor d'aplicacions és el servidor que hi ha a la capa intermitja, és a dir, entre el client i les fonts de dades

Definció restrictiva:

És aquell servidor que dóna suport als "thin clients", controlant les sessions dels usuaris, executant la lògica de negoci i connectant amb el recursos back-end, ja siguin dades, transaccions o contingut, donant a més suport per alta disponibilitat.

Aules d'empresa 2004 - LCFIB

Servidor web vs. Servidor d'aplicacions

La diferència bàsica entre un servidor web i un d'aplicacions és que el servidor d'aplicacions no només ha de donar suport a clients web

Els servidors web com a tals poden executar CGI i algun llenguatge de script, però no suportar una arquitectura gaire més complexa.

Als servidors d’aplicacions, una de les capes és sempre el servidor web.

Servidor d’aplicacions

Servidor web

Aules d'empresa 2004 - LCFIB

Quins components hi podem trobar?

Autorització/seguretat

Clients no web

ServidorWeb

Conectorsaltres sistemes

Conectorsamb BDCachés

Portals

BD

Altres sistemes

Gestors contingut

Balacejadors/alta disponibilitat

...

Administració

Aules d'empresa 2004 - LCFIB

La carta als reis dels servidors d’aplicacions

Serveis de seguretat

– Declaració descriptiva (no per programa)

– Utilització de certificats de client

Control de les sessions i l'estat

– Transparència en cookies i altres sistemes

– Persistència dels objectes

Balanceig de càrrega i tolerància a fallades

– Funcionament en cluster

– Escalabilitat posant més servidors

Aules d'empresa 2004 - LCFIB

La carta als reis dels servidors d’aplicacions

Suport per diferents clients

– Presentació adaptada a HTML, mòbils, PDA…

– Possibilitat de connexió directa als objectes de la capa de domini amb aplicacions remotes

Accés a diferents tipus de dades

– Conectivitat amb els sistemes de la organització

Transaccions

– Possibilitat de controlar transaccions que utilitzen diferents sistemes

Aules d'empresa 2004 - LCFIB

La carta als reis dels servidors d’aplicacions

Adherència a estàndards

– J2EE

– XML, LDAP, CORBA, SOAP...

Aplicacions i mòduls ja construïts sobre el propi servidor

– Portals

– Gestors de contingut

– Aplicacions de comerç electrònic

– Connectors amb altres sistemes

– ...

Aules d'empresa 2004 - LCFIB

La carta als reis dels servidors d’aplicacions

Facilitat per desenvolupar

– Mòduls per poder treballar amb Entorns de desenvolupaments (IDE)

Facilitat per administrar

– Administració remota via web

– Monitorització de l’execució de l’aplicació en temps real

– Possibilitat de deixar logs de l’execució

– Hot deploy: posada en marxa de noves aplicacions o versions sense haver de parar el sistema.

Aules d'empresa 2004 - LCFIB

Arquitectures per alta disponibilitat

– Balancejadors web hardware

– Màquines que fan de servidors web

– Màquines que fan de servidor d’aplicacions, en cluster

Balancejadorweb

Balancejadorweb

Servidoraplicacions

Balancejadorweb

Servidoraplicacions

...

Aules d'empresa 2004 - LCFIB

Factors a tenir en compte

Balanceig web

– Sticky sessions: una vegada començada una sessió, no la pot servir una altra màquina.

– Si un dels servidors web cau, com ho detecta el balancejador?

– Com repartim la carrega?

Cluster de servidors d’aplicacions

– Cada servidor web només es comunica amb el seu servidor d’aplicacions?

– S’ha de replicar la informació de les sessions perquè qualsevol servidor d’aplicacions pugui continuar una sessió si cau el que la gestionava originalment?

Aules d'empresa 2004 - LCFIB

Conclusions sobre alta disponibilitat

El fet de posar un servidor d’aplicacions no garantitza alta disponibilitat, hi ha una feina de configuració important

Quan més senzilla sigui una aplicació, més fàcil serà fer-la tolerant a fallades:

– Si no tenim sessions, no cal replicar res Hem d’anar en compte de no crear punts de fallada:

– Què passa si cau el balancejador hard?

– Què passa si cau la base de dades?

– Podem detectar el fet que un servei “es quedi tonto”?

– Pot ser que el servidor aguanti però que se’ns col·lapsi l’ample de banda?

Aules d'empresa 2004 - LCFIB

Oracle 9i Application Server

Una mica d’història

– Oracle Web Server (versió 2.0)

– Oracle Web Application Server (versió 3.0)

– Internet Application Server Primeres versions

– Arquitectura basada en “cartridges” per diferents tipus d’aplicacions

– El més important era el de PL/SQL, que executava aplicacions que estaven… a la base de dades!

– Cartridge Java, però no per Servlets

Aules d'empresa 2004 - LCFIB

Oracle 9i Application Server

Actualment

– Primera capa basada en Apache / mod_jserv / mod_plsql

– Segona capa, amb el servidor d’aplicacions pròpiament

Integració en un de tots els servidors de Oracle

– Servidor de forms (aplicacions clàssiques Oracle)

– Oracle Portal (abans WebDB)

– Application Server (PL/SQL, Java, JSP, EJB...)

Gran importància del caché, tant de pàgines com de la base de dades, per evitar peticions innecessàries. Implementa ESI

Aules d'empresa 2004 - LCFIB

ESI (Edge Side Include) a Oracle 9i

Les pàgines de portals, aglutinen informació de diferents llocs, però gran part de la pàgina és fixa. Si la guardem en un caché, la pàgina no estarà actualitzada.

Amb ESI, el que fem és separar les nostres pàgines en fragments, indicant

– origen de la informació

– tipus d’informació (fixa,variable)

– quant de temps es pot mantenir en caché La idea sota és que les pàgines es “munten” en un lloc proper

al client i només es demanen al servidor quan es estrictament necessari

Aules d'empresa 2004 - LCFIB

JBoss

Servidor Open Source (es guanyen la vida fent classes i consultories)

Servidor J2EE complet, com la majoria dels que veurem Microkernel amb mòduls,

basats en tecnologia JMX (Java Management Extension)

Novetat: suport per AOP(Aspect Oriented Programming)

– Permet afegir funcionalitats comuns a una sèrie de classes, per exemple persistència, logging...

Aules d'empresa 2004 - LCFIB

Lotus Notes

No és un servidor d’aplicacions, sinó una plataforma de treball en grup i base de dades de documents

El servidor (domino) ha passat de ser servidor de Lotus Notes a poder fer també de

– servidor web (amb les bases de dades de documents)

– servidor LDAP (amb els usuaris del sistema) Es poden programar aplicacions en un llenguatge propi

(LotusScript), en Java o simplement permetre accés a les bases de dades

Sistema ideal per publicar documents de forma que impliqui a tota la organització

Aules d'empresa 2004 - LCFIB

Vignette Story Server

Eina per crear grans portals CMS: Content Management System

– Edició via web

– Entorn de desenvolupament i producció

– Workflows de la informació CDS: Content Delivery System

– “Ensambla” les pàgines

– Personalització Treballa conjuntament amb el servidor d’aplicacions Sistema basat en plantilles i, inicialment TCL com a

llenguatge Actualment, plataforma V7

Aules d'empresa 2004 - LCFIB

Més servidors

Weblogic

– Weblogic és un dels servidors més veterans

– Té suport per pràcticament tot i suporta les últimes versions dels estàndards

Sun ONE Application Server

– Integració amb la resta de productes de la plataforma Sun ONE: servidor web, servidor de directori, entorn de desenvolupament (Sun ONE Studio)...

– Té una versió que es distribueix gratuïtament.

Aules d'empresa 2004 - LCFIB

BEA Weblogic

Aules d'empresa 2004 - LCFIB

Més servidors

WebSphere

– Solució completa, fins i tot amb base de dades (DB2)

– Excessivament complex

– Difícil de posar en marxa

Zope

– Servidor d’aplicacions basat en Python

– Open Source i gratuït

– Fa de gestor de contingut i permet desenvolupar noves aplicacions en Python

Aules d'empresa 2004 - LCFIB

Conclusions

És realment difícil definir el que fa exactament un servidor d'aplicacions, sobretot ara que cada vegada intenten fer més coses

És difícil avaluar-los. Totes les grans marques tenen algun joc de proves que l’afavoreix enormement i no ens en podem refiar

No ens hem de deixar enganyar pel nom i hem de veure realment quines característiques té un producte

Un servidor d'aplicacions necessita una gran quantitat de recursos. Potser un servidor web amb una sèrie d’extensions ens servirà si només hem de servir les nostres aplicacions a clients HTML.

LCFIBJordi Girona 1-3, Mòdul B6E-08034 Barcelona, Spain

lcfib@fib.upc.eshttp://www.fib.upc.es/LCFIB/

El web de la FIB

Aules d'empresa 2004 - LCFIB

Primera etapa

Servidor CERN Desenvolupament de la consulta d'expedients, totalment feta

a partir de pàgines estàtiques Primer sistema d'autentificació d'usuaris, totalment estàtic

Navegador Web de la FIB

Cern

Aules d'empresa 2004 - LCFIB

Segona etapa.

Desenvolupament de l'aplicació de modificació de la guia docent basada en CGI i fitxers de dades. Primer racó del professor

Canvi del servidor a Netscape Enterprise Server Aplicació d'avisos i notes, també basada en CGI i fitxers de

dades

Navegador Web de la FIB

NESFitxer de dades

Aules d'empresa 2004 - LCFIB

Tercera etapa

Introducció de Oracle i Oracle Application Server, lligats amb el servidor de Netscape. Es van migrant les aplicacions disponibles a PL/SQL

L'autentificació d'usuaris es fa per base de dades: finalment els usuaris es poden canviar el password

Navegador Web de la FIB

NES OASBD

Oracle

Aules d'empresa 2004 - LCFIB

Quarta etapa

Introducció de la tecnologia servlets a l'aplicació de votacions electròniques

Utilització del servidor JRUN lligat amb Netscape Enterprise Server, que a la versió 3.0 tenia un suport molt pobre de servlets

Navegador Web de la FIB

NES

NES JRUN

OAS

BDOracle

Aules d'empresa 2004 - LCFIB

Cinquena etapa

Utilització d'un servidor LDAP per guardar els passwords d'usuari, de cara a implementar un sistema de password únic amb la resta de sistemes

Utilització del LDAP de la UPC pels passwords dels professors

Canvi als servidors Apache (web) i Jserv (servlets), que ens donen la flexibilitat necessària per treballar amb 2 servidors LDAP

Eliminació de Oracle Application Server i substitució per un mòdul de Apache que permet executar PL/SQL

Servidor segur pels racons: els password sempre viatgen encriptats

Aules d'empresa 2004 - LCFIB

Cinquena etapa. Esquema

Navegador Web de la FIB

Apache

Apache JServ

BDOracle

https

iPlanetLDAP

LotusNotes

Aules d'empresa 2004 - LCFIB

LDAP i integració amb la resta de sistemes

Gràcies al fet d'autentificar els usuaris amb LDAP, s'ha pogut crear un sistema de password únic

Aquest password afecta a mail, autentificació a diferents màquines i ens ha permet també posar en marxa el webmail des del racó sense tornar a demanar password

Consulta del webmail

Apache

https

iPlanetLDAP

webmail.fib.upc.es

IMAP

alabi/alaba

ada

fusio/fissio

Aules d'empresa 2004 - LCFIB

Sisena etapa

Una màquina farà de racó i l'altre de web, però seran totalment intercanviables, ja que comparteixen disc

Actualització de JServ a Tomcat com a servidor de servlets Balanceig de càrrega entre els servidors de servlets Eliminació del modul mod_owa per executar el codi llegat

PL/SQL substuint-lo per DBPrism, basat en servlets

Aules d'empresa 2004 - LCFIB

Navegador Web de la FIB

Apache

Apache Tomcat

BDOracle

https

iPlanetLDAP

LotusNotes

Sisena etapa. Esquema

Tomcat

Aules d'empresa 2004 - LCFIB

Millores previstes

A nivell d’arquitectura, aconseguir un entorn d’alta disponibilitat, de forma que qualsevol dels dos servidors pugui assumir les funcions de l’altre de forma automàtica en cas de problemes

Intentar potenciar més la part de docència no presencial, per que cada assignatura pugui tenir un espai propi dintre del racó (i aixi evitar que els professors facin pàgines externes)

Estudiar altres formes més flexibles d’integrar tota la informació actual, a l’estil de uPortal.

Aules d'empresa 2004 - LCFIB

Conclusions

El web de la FIB s'ha anat adaptant a les noves tecnologies per satisfer les necessitats que s'han anat creant

El web i sobretot els racons s'han convertit en una eina imprescindible a la FIB

Cada cop s'han anat creant més serveis, ja sigui per iniciativa pròpia o per peticions explícites de professors o estudiants

Aules d'empresa 2004 - LCFIB

Per consultes sobre el seminari o temes web en general

jaumem@fib.upc.es

Per suggerències o problemes amb el web de la FIB

webmaster@fib.upc.es

Per suggerències o problemes amb quasevol tema

dels servidors o aules informàtiques de la FIB

lcfib@fib.upc.es