VERSIÓN UV DEL MODPAPI

En la Universitat de Valencia se han aplicado unos parches a la Versión 0-2 del modpapi.

Parches aplicados

Los parches aplicados en la UV son:

  • No es necesario ya que exista el fichero referido en "PAPIAuthLocation"
  • Todo acceso a "PAPIAuthLocation" devuelve un contenido vacío (0 bytes). El Apache no envía ya el contenido (mensaje de error, contenido del fichero, etc.), lo cual producía problemas con los navegadores.
  • El envío de los ficheros PAPIAcceptFile y PAPIRejectFile no utiliza una "subrequest", lo que permite que ya no sea necesario que estén dentro del árbol de documentos accesibles.
  • Si se define el atributo "PAPIauth", su valor se pone como contraseña en una cabecera "Authorization". Esto permite pasar contraseñas desde el AS a aplicaciones que utilizen autorización Básica y dicha cabecera para recuperar la contraseña (p.e., webmail que tiene que acceder luego a servidor IMAP).
  • El cookie "Lcook" tiene ahora el atributo "HttpOnly", para disminuir los riesgos de que sea leído por páginas HTML residentes en el servidor (XSS).
  • Al enviar la imagen de OK, que pone el Lcook, se añade una cabecera "P3P" de "Policies" para el IE8 y similares que, de otra manera no dejan poner cookies de terceros.
  • Aumentada la resolucion temporal (microsegundos) de la "key" que se utiliza para guardar sesiones en la DB. La resolución anterior (sq.) era insuficiente y provocaba sistemáticamente colisiones en servidores con un mínimo de carga

  • Añadido un timeout en las operaciones sqlite3 para evitar el "database locked", que provoca un error de "redirección incorrecta" en los navegadores en el momento del login.
  • Corregido bug en punteros de papi_post_handler (read_body). Ahora envía bien datos de los POSTs, por lo que ya se puede iniciar sesión en una página con un formulario.
  • Quitada la comprobacion de certificados del CURL. No necesaria y complica la configuración.
  • Ahora da error en caso de no poder salvar en la DB sqlite3. Esto facilita el debug.
  • Ahora un reload de la pagina que lleve el parámetro ACTION=CHECKED funciona si el existe Lcook, y salva datos y reinicia el login si no. ( NOTA: un reload de un POST no funciona porque el NAVEGADOR no vuelve a enviar los datos - debido a las redirecciones intermedias).
  • Se ha añadido un mecanismo de limpieza de la DBsqlite, para que no crezca indefinidamente a causa de los intentos de conexión que no terminan. Cada 30 minutos, se borran los registros que tienen más de 6 horas.
  • Modificación importante en la secuencia de redirecciones que tienen lugar cuando se valida. 1) Si sólo hay un AS definido y se usa wayf:built-in, mod_papi redirige directamente al AS, sin pasar por el wayf como antes, pues no hay nada que escoger. Se ahorra así una redirección inútil. 2) En el caso de login cuando se trata de un GET, mod_papi hace ahora una redirección más, para que el URL final esté "limpio" (sin los parámetros del PAPI) y se pueda recargar.

  • Corregido el funcionamiento de PAPILcookMaxTimeout y PAPILcookTimeout (eran ignorados).
  • Acepta el logout aunque el Lcook no sea valido (haya expirado,...)

  • Agnadido el cookie Lcook (no válido) también en la primera redireccion para poder usar PAPI con balanceadores por cookie usando el Lcook para persistencia de sesión.
  • El envío de un formulario en fase de autenticación admite ahora Deflate gzip (¡viene configurado por defecto en apache!)
  • Corregido un bug que impedía el funcionamiento cuando la petición no resultaba en un "filename" (p.e. cuando se usa un módulo para procesarla - WebSpehere)

Diferencias en la configuración


  ...
  
  PAPIAcceptFile   /etc/apache2/PAPI/image_ok.png
  PAPIRejectFile   /etc/apache2/PAPI/image_nok.png
  
  PAPILcookMaxTimeout 18000
  #
  # NUEVA VERSION: Ya NO ES NECESARIO que pueda acceder 
  # a los image*.png. No son necesarias estas líneas:
  ##  <Directory /etc/apache2/PAPI>
  ##    Order allow,deny
  ##    Allow from all
  ##  </Directory>
                  
  ...

  # NUEVA VERSION: no hace falta que el fichero exista
  # basta con que el URL pedido CONTENGA PAPIAuthLocation
  # DEBE empezar con / solo si el Location no la tiene al final.
  # (lo concatena con el Location)
  PAPIAuthLocation /PAPI/cookie_handler.jpg
Universitat de Valencia

 PAPI-SSO (Single Sign On)