Upload
bertex
View
255
Download
6
Embed Size (px)
Citation preview
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
Per suggerències o problemes amb el web de la FIB
Per suggerències o problemes amb quasevol tema
dels servidors o aules informàtiques de la FIB