Presentación

Luis Meléndez Aganzo

luism@uco.es

Servicio de Informática

Equipo de Docencia e Investigación

XV Jornadas Técnicas RedIris 2004

Objetivo

Proporcionar acceso a nuestros usuarios, desde cualquier

sitio, a bases de datos y revistas electrónicas contratadas

por la institución.

Requisito

Misma forma de acceso que dentro de la UCO

No haya que instalar software en el cliente

No haya que configurar nada en el navegador

Independiente del navegador

Se pueda acceder desde cibercafés, aulas, etc.

Deseable

No permita la entrada a usuarios no autorizados

Problema

Los proveedores controlan el acceso por dirección IP

(ideal: ellos usaran PAPI).

Condicionante de la solución

El acceso final al proveedor se debe realizar desde

una máquina de la Universidad

Opciones

VPN

WebVPN/ VPN SSL

Proxy web

Productos específicos (EZProxy, libproxy, ...)

PAPI

...

Opción: PAPI

Ventajas

Inconvenientes

Código abierto

Desarrollo español (RedIris)

No hay que configurar el navegador ni instalar software

Transparente al usuario (si se configura adecuadamente)

Posibilidad de federación entre instituciones

Difícil de instalar (por la complejidad de los conceptos)

Hay que configurar cada proveedor de forma independiente

En algunos casos (pocos) eso es difícil

PAPI: Conceptos

Authentication Server (AS)

Point Of Access (PoA)

Group-wide Point Of Access (GPoA)

Rewriting Proxy

Página Web (cgi-bin)

Punto único de autentificación

Hace que el navegador obtenga las claves necesarias para acceder a los PoA's

Implementado con mod_perl en Apache

Efectúa el control de acceso a recursos Web

Mecanismo para configurar las políticas de acceso a varios PoA's como uno sólo

Funcionalidad opcional de un PoA, cuando se configura con

Remote_URL o Remote_Domain.

Esquema RewritingProxy

papi13.uco.es es un PoA configurado con:

Remote_URL http://online.issn.org/

GET /webuco/...

GET /webuco/...

Navegador

papi.uco.es

www.uco.es

(PoA proxy para www.uco.es)

Servidor Web

Reescribir enlaces (*)

Presentación de la página de BBDD con los enlaces cambiados

(*) papi.uco.es es un PoA configurado con:

Remote_URL http://www.uco.es/

PAPI_Redirect http://online.issn.org/ http://papi13.uco.es/

PAPI_Redirect http://go5.isiknowledge.com/ http://papi27.uco.es/go5/

PAPI_Redirect ... ...

1- GET /webuco/buc/bbdd/

(1)

2 - REDIRECT http://papias.uco.es/cgi-bin/AuthServer

3 - GET /cgi-bin/AuthServer

4 - HTML (Login FORM)

5 - POST

6 - REDIRECT http://papi.uco.es/webuco/buc/ (accept.html)

7 - GET /webuco/buc/

(3),(4)

(5)

8 - GET /webuco/buc/

9 - HTML

10 - HTML (con enlaces reescritos)

Navegador

www.uco.es

AS

papi.uco.es

Esquema general

(1) Con .htaccess se redirecciona si la IP del navegador no es interna

(2) Se redirige desde la página de aceptación (accept.html). No se cargan

los cookies de los PoA's

(3) papi.uco.es es proxy para www.uco.es

(4) Aquí interviene WAYF (no se muestra por brevedad)

(5) Se aplican las directivas PAPI_Redirect para presentar al navegador

los enlaces apuntando a los papi's en vez de a los proveedores.

(2)

Mejoras

Utilizar un GPoA

Usar nombres de host virtuales más cómodos:

isi.papi.uco.es

issn.papi.uco.es

...

Dar solución a aplicaciones Windows (no Web):

Puntos clave

Redirección automática al AS si la IP no es local (.htaccess)

No se cargan cookies de PoA's tras la aceptación (WAYF)

Redirección automática a papi.uco.es tras aceptación

Un PoA (virtual host) para cada proveedor

Uso de RewritingProxy para reescribir los enlaces de la

página de BBDD y revistas (PAPI_Redirect)

próxima integración PAPI/Kerberos.

Configuración (I)

.htaccess

ErrorDocument 403 http://papias.uco.es/cgi-bin/AuthServer

<Limit GET>

order deny,allow

deny from all

allow from a.b.x

allow from a.b.y

...

</Limit>

AuthServer.cf

$$cfg{acceptTemplate} = fromFile("accept_uco.html");

$$cfg{credentialHook} = \&PAPI::BasicAuth::AllSites;

$$cfg{attrRequestHook} = \&PAPI::BasicAuth::AllSiteAttributes;

$$cfg{basicAuthDB} = "sites.pdb";

...

sites

site::siteA::PAPIN::http://papi.uco.es::/PAPI/cookie_handler.cgi::7200::uco_papi::/

site::siteB::PAPI1::http://papi1.uco.es::/PAPI/cookie_handler.cgi::7200::uco_papi1::/

site::siteC::PAPI2::http://papi2.uco.es::/PAPI/cookie_handler.cgi::7200::uco_papi2::/

site::siteD::PAPI3::http://papi3.uco.es::/PAPI/cookie_handler.cgi::7200::uco_papi3::/

...

Configuración (II)

<html>

<head>

<title>PAPI Authentication Server: Accepted</title>

<script>

<!--

function autoredirect() {

setTimeout("top.location.href='http://papi.uco.es/webuco/buc'", 0);

}

// -->

</script>

</head>

<body onload="javascript:autoredirect()">

<b>En unos momentos será redirigido...</b><p>

<!-- <table><papi var="PAPIsiteList"/></table> -->

</body>

</html>

accept_uco.html

Configuración (III)

httpd.conf (fragmento en papi.uco.es)

<VirtualHost 150.214.110.58>

ServerName papi.uco.es

<Location />

PerlSendHeader On

PerlAccessHandler PAPI::Main

<PAPI_Local>

Service_ID uco_papi

Req_DB /usr/local/PAPI/PoA/req_papi

Remote_URL http://www.uco.es

GPoA_URL wayf:built-in

...

PAPI_Redirect http://online.issn.org/ http://papi13.uco.es/

...

PAPI_Redirect http://go5.isiknowledge.com/ http://papi27.uco.es/go5/

...

</PAPI_Local>

</Location>

</VirtualHost>

Configuración (IV)

httpd.conf (Ejemplo de proxy con Remote_URL)

<VirtualHost 150.214.110.58>

ServerName papi13.uco.es

<Location />

PerlSendHeader On

PerlAccessHandler PAPI::Main

<PAPI_Local>

Service_ID uco_papi13

Req_DB /usr/local/PAPI/PoA/req_papi13

GPoA_URL wayf:built-in

Remote_URL http://online.issn.org/

</PAPI_Local>

</Location>

</VirtualHost>

Configuración (V)

httpd.conf (Ejemplo de proxy con Remote_Domain)

<VirtualHost 150.214.110.58>

ServerName papi27.uco.es

<Location />

PerlSendHeader On

PerlAccessHandler PAPI::Main

<PAPI_Local>

Service_ID uco_papi27

Req_DB /usr/local/PAPI/PoA/req_papi27

GPoA_URL wayf:built-in

# REL 3, 20040216 - Requires PAPI >= 1.3.0

# This is based on the *new* interface to ISI services, much simpler

# than the old one. If you still use the newisiknowledge domain,

# change the following definitions as appropriate

#

Remote_Domain isiknowledge.com

# Mark URI-escaped characters

PAPI_Redirect %(25)?([0-9a-fA-F]{2}) *$1$2*

# Normal references

PAPI_Redirect ([\w]+)\.isiknowledge.com papi27.uco.es/$1/

PAPI_Redirect (/|\*2F\*)isiknowledge.com $1papi27.uco.es/www/

# Keep this while the newisiknowledge domains works

PAPI_Redirect ([\w]+)\.newisiknowledge.com papi27.uco.es/$1/

# URLs with port spec

PAPI_Redirect papi27.uco.es/([\w]+)(/|\*2F\*)?(:|\*3A\*)(8080)(/|\*2F\*) $1.isiknowledge.com$3$4$5

PAPI_Redirect papi27.uco.es/([\w]+)(/|\*2F\*)?(:|\*3A\*)([\d]+)(/|\*2F\*) papi27.uco.es$3$4$5$1$5

# Rewrite back "product references" into URL params

PAPI_Redirect product_st_thomas=(.*?)papi27.uco.es(:|\*3A\*)?([\d]+)?(/|\*2F\*)(.*?)(/|\*2F\*) product_st_thomas=$1$5.isiknowledge.com$2$3$4

# Unmark URI-escaped characters

PAPI_Redirect \*(25)?([0-9a-fA-F]{2})\* %$1$2

# Relative links

PAPI_Redirect http://papi27.uco.es/([\w]+)/(.*?)(\.\./)+(.*?) http://papi27.uco.es/$1/$4

# Final clean-up of extra slashes (avoid problems in cookie paths)

PAPI_Redirect papi27.uco.es(/|\*2F\*)([\w]+)(/|\*2F\*){2} papi27.uco.es$1$2$3

# Add here any references for other PAPI proxies to allow the

# use of "full text access" features

</PAPI_Local>

</Location>

</VirtualHost>

Más información

http://papi.rediris.es/doc

http://papi.rediris.es/comu/proxies/

Luis Melendez

2004-10-23T18:54:10