10 anys de racó

52
LCFIB Jordi Girona 1-3, Mòdul B6 E-08034 Barcelona, Spain [email protected] http://www.fib.upc.es/LCFIB/ 10 anys de Racó O com està muntat el Racó per dintre i com ha anat evolucionant

Transcript of 10 anys de racó

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

[email protected]://www.fib.upc.es/LCFIB/

10 anys de Racó

O com està muntat el Racó per dintre

i com ha anat evolucionant

LCFIB- 2006

Índex

Arquitectura hardware i tecnologies utilitzades

Autentificació dels usuaris i intregració d’aplicacions

L’ecosistema del Racó.Relació amb altres sistemes i aplicacions

Desenvolupant pel Racó

Coses que s’han fet malament

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

[email protected]://www.fib.upc.es/LCFIB/

Arquitectura de hardware i tecnologies utilitzades

LCFIB- 2006

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

LCFIB- 2006

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

NES

Fitxer de dades

LCFIB- 2006

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

LCFIB- 2006

Més sobre PL/SQL

Tecnologia lligada a Oracle Web Server S’introdueix a la FIB perque s’arriba a un acord amb Oracle i

s’utilitza amb altres projectes externs Pros

– Connexió directa amb la BD. Facilitat per fer consultes

– Lligat amb Oracle Designer que generava automàticament codi per les altes/baixes/modificacions

Contres

– Les pàgines es generen escrivint el codi HTML.

– Codi generat bastant difícil d’entendre

– Totalment lligat a Oracle. S’executa a la BD! Actualment, es una tecnologia obsoleta, pero encara es

mantenen algunes aplicacions amb ella (forums, per exemple)

LCFIB- 2006

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

LCFIB- 2006

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 HTTPS pels racons: els passwords sempre viatgen encriptats, que serveixen per moltes coses!

LCFIB- 2006

Cinquena etapa. Esquema

Navegador Web de la FIB

Apache JServ

BDOracle

https

iPlanetLDAP

LotusNotes

Apache

LCFIB- 2006

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 permès 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

Entrada al PC

moonrey

Servidors SMB

LCFIB- 2006

Sisena etapa

Una màquina fa de racó i l'altre de web, però son 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

LCFIB- 2006

Navegador Web de la FIB

Apache Tomcat

BDOracle

https

iPlanetLDAP

LotusNotes

Sisena etapa. Esquema

Apache Tomcat

LCFIB- 2006

Com es fa el balanceig de Tomcats?

No utilitzem mod_jk, que es la forma estàndard, perque donava errors

Balanceig utilitzant mod_rewrite i regles de reescriptura

– Cada tomcat està configurat per afegir el nom de la màquina com a sufix de jsessionid

– Apache comprova si tenim la cookie de sessió. Si no la tenim, ens envia aleatoriament a un dels 2 tomcats

– Si tenim la cookie, ens envia al servidor indicat per la cookie

No fa sticky session: no guardem res a la sessió excepte l’username, per tant no ens cal.

Podem desactivar el balanceig fàcilment.

LCFIB- 2006

Setena etapa

Aquesta es l’etapa actual.

Renovació de les màquines, que van quedant antiquades

Una màquina pròpia per la Base de dades

Canvi a OpenLDAP, que té rèpliques a altres màquines

Trasllat d’autentificació de Apache a Tomcat. Parlarem més sobre aixo quan parlem d’autentificació d’usuaris.

LCFIB- 2006

Navegador Web de la FIB

Apache Tomcat

BDOracle

https

OpenLDAP

LotusNotes

Setena etapa. Esquema

Apache Tomcat

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

[email protected]://www.fib.upc.es/LCFIB/

Desenvolupant pel Racó

LCFIB- 2006

Conceptes dintre del Racó

Usuaris. Qualsevol persona que entra al Racó

Serveis. Opcions de menu que apareixen a l’esquerra i que corresponen a aplicacions

Grups. Cada usuari pertany a diferents grups, que li donen accés a certs serveis.

Espais. Pestanyes que apareixen a la part superior del Racó.

– Normalment son assignatures, pero hi ha altres tipus.

– Cada tipus tindrà uns serveis disponibles per defecte.

– Cada usuari té associades unes pestanyes, amb permisos de lectura o escriptura

LCFIB- 2006

Exemple

Un estudiant d’aquesta classe…

– Pertany al grup “EST”. Aixo li permet veure el seu expedient

– Té una pestanya de lectura “DSBW” per estar matriculat a l’assignatura

– Pot veure els avisos de l’assignatura

El profe d’aquesta classe

– Pertany al grup “PROF” i per exemple, no té el seu expedient disponible

– Té una pestanya d’escriptura “DSBW” on pot publicar avisos

LCFIB- 2006

Que hem de fer per un nou servei?

Passos

– Crear el servlet o servlets implicats

– Crear les plantilles (on va el codi HTML)

– Crear les taules de la BD necessàries

– Donar-lo d’alta com a servei a la BD amb la URL inicial

– Associar-lo als tipus d’espai i grups que calgui.

A que tindrem accés des del servlet

– L’usuari autentificat

– Comprovar privilegis sobre els serveis i espais

– Generar els menus i imatge bàsica

– Llibreries per treballar amb plantilles

– Connexió a la base de dades

LCFIB- 2006

La llibreria de plantilles

Forma molt senzilla de treballat amb plantilles

Permet treballar amb

– Etiquetes, que es poden omplir

– Blocs que es poden amagar o repetir

Exemple de plantilla + codi Java

<h1>@@$TITOL@@</h1>

<li>

@@FILA{@@

<ul>@@$ELEMENT@@.

@@}@@

</li>

NO utilizem JSP, sino només plantilles

Plantilla p=new Plantilla(“planti.html”);p.assignar(“TITOL”,”Aixo es un titol”);p.repetir(“FILA”);p.assignar(”ELEMENT”,”Primer valor”);p.assignar(”ELEMENT”,”Segon valor”);

LCFIB- 2006

D’on surten les noves aplicacions?

Iniciativa del LCFIB

– Accés via web als fitxers

– Reserva d’equips

Iniciativa dels professors

– Canvis a l’aplicació d’entrega de pràctiques

– Avisos per grups

Iniciativa dels estudiants (DAFIB)

– Eleccions a delegat

– Previsió de matrícula

Iniciativa de la facultat

– Enquestes ECTS

– Instàncies de canvi de grup, matrícula i convalidació

LCFIB- 2006

Aplicació amb canvi de requeriments: Pràctiques

Canvi radical de requeriments

Inicialment

– Aplicació perque la gent pogués entregar les pràctiques des del Racó

– Només es demanava una data de caducitat

Actualment

– Aplicació per poder entregar pràctiques en sessions tancades per un grup concret en una aula concreta

Ampliació: l’entorn segur.

– Assegurar que des dels PC de l’aula només es pot accedir a aquesta aplicació

– Firewall + Racó “capat” a únicament les pràctiques

LCFIB- 2006

Que passa si es una aplicació externa?

Adaptar una mica la imatge

Que treballi amb els mateixos usuaris que el Racó

Si pot ser, que no torni a demanar el password

Com podem fer tot aixo? Veure el capítol seguent.

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

[email protected]://www.fib.upc.es/LCFIB/

Autentificació dels usuarisi integració d’aplicacions al Racó

LCFIB- 2006

El problema dels usuaris

Integrar una aplicació al Racó normalment vol dir

– Que autentiqui amb els usuaris/passwords del Racó

– Que tingui accés a l’usuari amb que hem entrat

Hem d’intentar al màxim treure de l’aplicació la part que s’encarrega d’autenticar usuaris.

Cas ideal: aplicacions Java que s’instalen al propi Tomcat del Racó i que utilitzen mecanismes estàndard

– Security-constraint al web.xml

– Request.getRemoteUser()

Cas mig: aconseguir que aplicacions que tenen el seu propi sistema “confiin” en l’autentificació del Racó

Cas difícil: integrar aplicacions que estan en altres servidors

LCFIB- 2006

LDAP

Base de dades d’usuaris

LDAP FIB

– Es guarden tots els usuaris i passwords d’estudiants

– Gestionat desde la FIB

– Es pot utilitzar també desde Windows, Linux i Unix i tenir d’aquesta forma un password únic.

LDAP UPC

– Es guarden els professors i PAS

– Tots els estudiants de la UPC

– Gestionat externament

Els usuaris del Racó s’autentifiquen contra els 2 LDAPs

LDAP UPC d’estudiants? No podem directament

LCFIB- 2006

LDAP + mod_auth_ldap

Primera forma de protegir el Racó utilitzant LDAP

Causa de que ens passéssim a l’Apache: ens permetia fer la consulta a 2 LDAPs, modificant el mòdul mod_auth_ldap

Basat en “basic authentication”

– No caduquen les sessions

– Permet que qualsevol aplicació dintre del mateix servidor vegi l’usuari

– Consulta intensivament el LDAP

Curiositat: LDAP no es “case sensitive”, aixi que haviem de passar l’usuari a minúscules al propi mòdul.

LCFIB- 2006

LDAP + Realm Java

Al ser el racó pràcticament tot Java, podem passar les proteccions al Tomcat

Protegim les aplicacions al web.xml / Realms de Tomcat

Tomcat permet compartir usuaris entre aplicacions

Desenvolupament de JNDI2Realm

– 2 instancies de JNDIRealm

– Crida primer una i després l’altre

Avantatges respecte mod_auth_ldap

– Podem fer les connexions a LDAP segures sense problemes de llibreries.

– Tenim sessions que caduquen

– Disminuim càrrega del LDAP

LCFIB- 2006

El problema del password

Idealment, el Racó no necessitaria accedir al password, ja que la validació es fa en una fase prèvia

Algunes aplicacions dintre del Racó el necessiten:

– Forums: ha de validar el password al fer un post.

– Webmail: ha de fer login al servidor IMAP

– Davenport: ha de fer login al servidor SMB

Volem integrar l’aplicació sense que torni a demanar-lo

Solucions possibles

– Guardar-nos el password en memòria (a la sessió) per si el necessitem més endavant.

– Si tenim l’aplicació en un altre servidor, hem de passar-li d’alguna forma

LCFIB- 2006

Integració de Webmail

Horde IMP, fet amb PHP, instal.lat en un servidor propi

Funciona com un client IMAP: es connecta a correu.fib.upc.es utilitzant username i password

2 formes d’accedir-hi

– Directament, a webmail.fib.upc.es

– A través del Racó

/check_mail: fa proxy via https a una pàgina del servidor webmail que retorna un GIF o un altre segons si hi ha mail sense llegir o no

/webmail: es fa proxy d’una pàgina del servidor webmail que crea la sessió PHP i després fa una redirecció

– En tots 2 casos es necessita username i password

LCFIB- 2006

Integració de Davenport

Davenport funciona com un gateway que permet accedir utilitzant HTTP o WebDAV als servidors SMB de les aules.

L’autentificació va directament contra el servidor SMB

Utilitza “Basic authentication”

Podem evitar haver de tornar a posar password? Si

– Davenport al mateix Tomcat que el Racó

– Filtre (AuthFromSession) que es capaç de retornar la capçalera “authorization” a partir de l’username i el password en memòria.

Actualment, demana password perque està en un servidor a part, ja que donava problemes de rendiment que acabaven afectant al Racó

LCFIB- 2006

Integració de Polarion

Novetat encara no disponible: accés al repositori Subversion via web, com a lectura i escriptura

Autentifica contra el repositori Subversion

Utilitza “Basic authentication”

Podrem evitar haver de tornar a posar password? Si

– Instal.lem l’aplicació al mateix Tomcat

– Utilitzem el filtre per falsejar la capçalera authentication

LCFIB- 2006

Conclusions

Solucions “ad-hoc” (també conegudes com “xapusses”)

Busquem una millor solució per gestionar la integració d’aplicacions que ens permeti

– Autentificar una sola vegada (single sign on – SSO)

– Permetre aplicacions desenvolupades en diferents tecnologies (PHP, Java,...) i fins i tot no web

– Permetre aplicacions instalades en diferents servidors

– Permetre tenir diferents llocs on validar els usuaris (2 LDAPs independents en el nostre cas)

– Oferir un bon nivell de seguretat

Solució per la que hem apostat: CAS. En marxa actualment

LCFIB- 2006

Arquitectura de CAS

Servidor: aplicació Java, que gestiona el login, basada en Spring i extremadament configurable

Clients per Java, PHP, PERL, modul d’apache i PAM

– Aplicacions web

– Pàgines estàtiques

– Usuaris de sistema operatiu UNIX (via PAM)

Client aplicacions web Java = Servlet Filter

– No hem de tocar l’aplicació, només el web.xml

Es basa en una cookie que ens identifica (TGT) i una que ens dona accés a un cert servei (ST).

Permet que una aplicació es validi contra un altre servei que suporti CAS propagant les autoritzacions

LCFIB- 2006

Procés de login

1. Ens connectem al Racó

2. En redirigeix al servidor d’autentificació CAS indicant el servei al qual volem accés (la URL)

3. Introduim username/password i es valida al servidor

4. El servidor CAS ens torna una cookie TGT (ticket granting ticket), i ens envia una redirecció al servei on voliem anar adjuntant un paràmetre amb ST (service ticket)

5. El Racó (el Servlet Filter del CAS exactament) demana al servidor CAS a qui correspon el ST

6. Entrem al Racó amb l’usuari amb que hem entrat.

LCFIB- 2006

Procés de login (esquema)

Servidor CAS

RacóLDAPs

1

2

3

4

5

Si ara volem entrar a un altre servei, el navegador té una cookie TGT enviada per servidor CAS i no li preguntarà username i password

LCFIB- 2006

Exemple d’utilització de CAS: Inventari

Aplicació interna del LCFIB per gestionar la xarxa

Feta en PHP, totalment a part del Racó

Utilitzava una de les formes “xapusses” per identificar-se amb els usuaris del Racó.

Com “casificar” l’aplicació?<?php

include_once('CAS/CAS.php');

phpCAS::client(CAS_VERSION_2_0,‘raco.fib.upc.es',443,‘/cas');

phpCAS::forceAuthentication();

$user=phpCAS::getUser()

?>

Així, ens autentifiquem al Racó i saltem al servidor on hi ha l’inventari, sense haver de tocar res més.

LCFIB- 2006

“casificació” del webmail

Tal i com està actualment, el webmail necessita el password per poder fer login a IMAP

IMAP autentifica a través de PAM contra LDAP

Solució

– “casificar” IMAP gràcies a pam_cas

– “casificar” Horde IMP i fer que aquesta aplicació faci de proxy CAS i faci el login a IMAP

Amb aquest procés podriem arribar a no tenir cap aplicació que necessiti el password.

LCFIB- 2006

Problemes de CAS

Logout

– No hi ha una forma fàcil de fer logout de totes les aplicacions de cop. Ara si perque en tenim poques!

Balanceig

– Si tenim 2 servidors CAS, no comparteixen la mateixa informació dels tickets

– Solució: implementar un TicketRegistry basat en BD (fàcil gràcies a la utilització de Spring)

Password

– Actualment, tenim aplicacions no “casificades” que han d’accedir al password.

– El problema realment es l’aplicació

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

[email protected]://www.fib.upc.es/LCFIB/

L’ecosistema del Racó.Relació amb altres sistemes i aplicacions

LCFIB- 2006

PRISMA

Sistema de gestió acadèmica de la UPC

Muntat sobre Oracle i Oracle Application Server

Conté totes les dades dels professors, estudiants, matrícules...

Per raons de seguretat no es pot accedir directament a la BD

Com sincronitzem?

– Prisma fa un “snapshot” de certes dades que interessen als centres en una base de dades aillada.

– “Database link” de la BD del Racó amb aquesta BD

– Sincronització diària (feta en PL/SQL)

Accessos directes a l’aplicació Prisma

– Expedient acadèmic

– Expedient de PFC

LCFIB- 2006

Mailman

Sistema de gestió de llistes de distribució de correu

Llistes de distribució manuals

– La gent envia mails de subscripció

– Es donen d’alta i baixa amb una aplicació web

Llistes de distribució automàtiques

– Exemples: professors, professors responsables, personal de la FIB, erasmus,...

– Les dades per les llistes estan al Racó

– Script al servidor de llista que consulta una URL del Racó per obtenir els mails de cada llista i actualitzar-les

– El Racó proporciona un webservice “a lo cutre”

LCFIB- 2006

Quotes de disc i impressió

Serveis que el Racó consumeix

Quota de disc

– Servei propi, muntat als servidors de disc

– Permet consultar la quota disponible remotament

– Interfície en XML-RPC (webservice “de veritat”)

Quota de impressió

– La quota de pàgines consumides es guarda a LDAP

– Ens connectem a LDAP com qui es connecta a una BD i consultem els camps que ens interessen

LCFIB- 2006

Lotus Notes

Servei de treball en grup que s’utiliza a nivell UPC

Permet editar bases de dades de documents, amb un client propi

Es on es donen d’alta tots els professors i PAS de la UPC

Es el servei que al qual consultem via LDAP, com ja hem vist a l’apartat d’autentificació d’usuaris

Es poden visualitzar algunes de les BD via web

Des del Racó i el web de la FIB, obtenim aquestes pàgines i les parsegem

– Ocupació de les sales de presentacions

– Correu propi de Lotus Notes

– Base de dades de personal LCFIB

LCFIB- 2006

Accessos directes a la BD del Racó

Aprofitem les dades que hi ha a la BD del Racó per algunes aplicacions no web

Aplicació d’escriptori de les reserves

– Permet fer reserves més complexes

– Aplicació Java, producte d’un PFC

Accés amb Access via ODBC desde secretaria

– S’insereix informació sobre cursos de lliure elecció

– No hi ha aplicació: la informació arriba en un excel i es pot fer cut&paste en taules vinculades.

Aplicació de gestió de convenis amb universitats estrangeres

– Aplicació Java, que necessita les dades dels estudiants

– També PFC

LCFIB- 2006

Monitorització i anàlisi de logs

Sistema de monitorització centralitzat: Nagios

– Fa peticions periodiques a diferents serveis o comprova valors crítics de les màquines (memoria, disc, temperatura)

– Actualment, unes 1000 alarmes definides a tota la FIB

– Comprova el web, la base de dades i l’entrada al Racó, comprovant el temps de resposta i el contingut

– Només avisa, no actua en cas de problemes, pero ens permet saber que algo falla

Anàlisi de logs

– Es copien els logs de web i de Racó a una altra màquina

– Es passa un procés d’analisi, per obtenir estadístiques

– Fins fa poc, Webtrends. A partir d’ara, Awstats

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

[email protected]://www.fib.upc.es/LCFIB/

Aprenent dels errors

LCFIB- 2006

Aprenent dels errors (I). Part tècnica

Guardar-se el password No tancar les connexions a la BD (que funciona amb pool) HTTPClient. No controlar timeouts o concurrencia Aplicacions que han donat (o donen) problemes I que poden

afectar a tot el Racó.

– Eleccions, Davenport: cap un altre tomcat Suposar que Oracle ho fa tot sempre bé

– Analitzar les taules dels forums No tenir un framework clar de programació Tenir un sistema depenent totalment d’Oracle No tenir un disseny gràfic prou flexible No validar prou els paràmetres

LCFIB- 2006

Aprenent dels errors (II). Part organitzativa

Tenir entorns de desenvolupament i producció “lleugerament” diferents

– Tomcat es molt “tiquis-miquis” amb certs paràmetres

Pensar que es necessari un informàtic per certes tasques

– Edició de continguts web

– No fer eines d’administració i acabar fent coses “a mà” quan les podria fer algu altre

Textos desafortunats. No sabem redactar

– Els missatges d’error sempre s’acaben redactant malament. Tothom els enten malament

LCFIB- 2006

Aprenent dels errors

Quan algo funciona malament…

– La culpa pot ser del hardware

– La culpa pot ser del sistema operatiu

– La culpa pot ser dels servidors utilitzats

– Quasi sempre, la culpa és del programa desenvolupat

Millorar les màquines no pot solucionar un problema de disseny

LCFIB- 2006

Per consultes sobre el seminari o temes web en general

[email protected]

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

[email protected]

Per suggerències o problemes amb quasevol tema

dels servidors o aules informàtiques de la FIB

[email protected]