NOTAS DE INSTALACION DEL MOD-PAPI

SSO apache module

(1 Oct 2010 - 3 May 2013)

ENLACES VARIADOS

NOTAS

  • ¡ATENCIÓN!: NUNCA activar las cachés en una zona protegida por el PAPI: se pueden llegar a cachear los cookies de validación, devolviendo a un usuario los cookies de otro (!). En concreto, asegurarse de que la aplicación NO pone la cabecera "Cache-Control" (p.e. "Cache-Control: max-age=259200, public").
  • A partir de la version 0.0.2-7 del modpapi_UV funcionan correctamente las variables PAPILcookTimeout (tiempo de inactividad antes de tener que renovar la sesión en el AS) y PAPILcookMaxTimeout (tiempo de trabajo máximo antes de tener que renovar la sesión en el AS). Observar que PAPILcookMaxTimeout por lógica debe ser siempre mucho mayor que PAPILcookTimeout. Por defecto ambos valores son 3600 sg. Por ello las configuraciones ejemplo más abajo han sido modificadas cambiando PAPILcookTimeout por PAPILcookMaxTimeout, lo cual es ahora la configuración recomendada.

EJEMPLO DE CONFIGURACION DE UN POA-MODPAPI que usa el GPOA

(NO recomendada en la UV)

Esta es la configuración más sencilla.
NO requiere definir el PoA en el AS.
Ahorra dos redirecciones si ya está validado en el GPoA,
pero son dos redirecciones más si no lo está.
Se pueden pasar atributos desde el AS, pero son los que tiene definido el GPOA (el usuario, p.e.).
NO FUNCIONA EL LOGOUT (el AS no registra la conexión -no le llega- y el GPOA tampoco.

    # Crear /etc/apache2/PAPI/ con permisos de ESCRITURA para www-data
    # Copiar a este directorio la clave publica del GPoA, que
    # DEBE llamarse _GPoA_pubkey.pem
  
    PAPILcookMaxTimeout 18000
    PAPIURLTimeout 1800

    PAPIReqDBPath /etc/apache2/PAPI/
    PAPIKeysPath /etc/apache2/PAPI/

    <Location /papiprot/>

      AuthType PAPI
      Require valid-user
      PAPIServiceID papiprot
      # Imprescindible si no es igual al ServerName!
      PAPIDomain baul.uv.es
      
      # No necesaria. Pero asi permanece entre arranques apache!
      PAPILkey  25b42021d604199dd07bd4de8e5c8b16
      
      # ... Para usar el GPOA
      PAPIGPoAURL      https://gpoa.uv.es/papi/cookie_handler.jpg
      
      # VERSION UV: 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

    </Location> 

EJEMPLO COMPLETO DE INSTALACION DE MODPAPI (POA directo al AS)

(Requiere alta en el AS)

     
  # ---------------------------------------------------
  # 
  # mkdir /var/www/papiprot
  # cp /var/www/casprot/index.html /var/www/papiprot/
  # sce /var/www/papiprot/index.html
  # mkdir /var/www/papiprot/PAPI
  # touch /var/www/PAPI/cookie_handler.jpg
  #
  # mkdir /etc/apache2/PAPI
  # scp caja:/etc/apache2/PAPI/* /etc/apache2/PAPI/
  # chown www-data /etc/apache2/PAPI/
  # chown www-data /etc/apache2/PAPI/xxxxx.db 
  #
  # .... para compilar el modulo 
  # mkdir /u/soft/MOD_PAPI
  # cd /u/soft/MOD_PAPI
  # svn checkout https://forja.rediris.es/svn/modpapi
  # cd tags/version-0.2/
  # aptitude install libmcrypt-dev libcurl4-dev libglib2.0-dev 
  # aptitude install cmake cdbs apache2-prefork-dev
  # ( rm CMakeCache.txt )
  # dpkg-buildpackage -b
  # cd ..
  # .............................
  #
  # aptitude install libcurl3-gnutls libmcrypt4
  # dpkg -i libapache2-mod-papi_0.0.2-1_amd64.deb 
  # a2enmod papi
  # 
  # ---------------------------------------------------
  
  PAPILcookMaxTimeout 18000
  PAPIURLTimeout 1800

  # DEBE ser accesibles via web (el directorio debe estar
  # accesible para el apache, No necesariamente en el sitio
  # protegido, pero puede estar ahi). Es el modulo papi el que los 
  # lee y envia, pero no puede leerlos si el apache no le deja.
  PAPIAcceptFile   /etc/apache2/PAPI/image_ok.png
  PAPIRejectFile   /etc/apache2/PAPI/image_nok.png
  # NO necesario en la Version UV
  #<Directory /etc/apache2/PAPI>
  #  Order allow,deny
  #  Allow from all
  #</Directory>
  
  # www-data DEBE poder escribir
  PAPIReqDBPath /etc/apache2/PAPI/
  # Debe ser accesible por www-data y estar ahi la clave
  # del servidor.
  PAPIKeysPath /etc/apache2/PAPI/

  <Location /papiprot>
    #Options Indexes
    #Order allow,deny
    #Allow from all
    
    AuthType PAPI
    Require valid-user
    # Este nombre debe ser unico y el que le pones en la tabla del AS
    PAPIServiceID papiprot
    # Imprescindible si no es igual al ServerName!
    # Es el dominio en el que se ponen los Cookies!
    PAPIDomain baul.uv.es
    PAPIAS UVAS https://as.uv.es/cgi-bin/AuthServer Universitat de Valencia
    PAPIRemoteUserAttribute username
    # cat `find /etc/ -type f -print` | md5sum
    # No necesaria. Pero asi permanece entre arranques apache!
    PAPILkey  25b42021d604199dd07bd4de8e5c8b16
    
    # Esto es para que mande al AS si no esta autenticado
    PAPIWAYF built-in
    
    # cookie_handler debe existir, pero DEBE estar vacio (sino existe,
    # la image_ok se mezcla con el error apache, si no es vacio
    # se mezcla con el contenido (chapuza!)
    # DEBE estar en la zona protegida (para que papi lo pille)
    #
    # VERSION UV: no hace falta que el fichero exista
    # basta con que el URL definido en el AS CONTENGA PAPIAuthLocation
    # DEBE empezar con / solo si el Location no la tiene al final.
    # (lo concatena con el Location)
    PAPIAuthLocation /papiprot/PAPI/cookie_handler.jpg

  </Location> 
  
  - Los errores los da en:
     tail -f /var/log/apache2/error.log
  

ACTIVACIÓN DE UN SERVICIO EN EL AS

Desde finales de 2012 existe una herramienta web para que los administradores puedan realizar mucho más cómodamente el mantenimiento de la tabla del AS. Lo que viene a continuación se mantiene solamente como referencia interna.

/usr/local/PAPI/AS/etc/UVsites.src

     # ES MUY IMPORTANTE que no hayan //. 
     # Si la location lleva las DOS /: /papiprot/ 
     #    el authuri NO lleva / al principio: PAPI/cookie_handler.cg 
     #    el accessuri NO lleva / al principio.
     # Si no se pone nada, accessuri=index.html
     site::papiprot::Papiprot mod_papi::https://baul.uv.es::PAPI/cookie_handler.jpg::7200::papiprot::/papiprot/::index.html
     
   Otro ejemplo, con explicaciones:
   site::correo2                  # Nombre arbitrario para la DB del AS
       ::Correo2 DES Postman      # Descripccion arbitraria. 
                                  # DES para que no sea publico.
       ::https://correo2.uv.es    # El principio para todos los URL's
       ::/PAPI/cookie_handler.jpg # El MISMO que en el apache (PAPIAuthLocation)
       ::7200
       ::correo2   # El MISMO que has puesto en el apache (PAPIServiceID)
       ::/cgi-bin  # El MISMO que en el apache (location)
       ::/postman/cclient/mb_change/noop/spa/_/_/  # Esto solo lo utiliza 
                                                   # para el "logout", 
                                                   # url para reconectar 
       ::username=<papi var="PAPIuid"/>,PAPIauth=<papi var="PAPIproxykey">
                                      # En este caso se definen los atributos,
                                      # para pasar un ticket-passwd al IMAP
  

  pdimport -n -s  /usr/local/PAPI/AS/etc/UVsites.src /usr/local/PAPI/AS/etc/UVsites.pdb
  
- Los errores del AS se pueden ver en:
      tail -f /var/log/apache2/access_as.log
      tail -f /var/log/apache2/error_as.log
      tail -f /var/log/PAPIAS.log
                    

VARIABLES DE CONFIGURACION DE MODPAPI

(Tabla de equivalencias con las variables del módulo perl)

Only the next tags have been implemented, and theirs 
names have changed:

Old tag                                   New tag
---------------------------------------------------------
HKEY_File                                 Not implemented
LKEY_File                                 PAPILkey (1)
Service_ID                                PAPIServiceID
Accept_File                               PAPIAcceptFile
Reject_File                               PAPIRejectFile
Pubkeys_Path                              PAPIPubkeysPath
Domain                                    PAPIDomain
Auth_Location                             PAPIAuthLocation
Signoff_Location                          PAPISignoffLocation
Pass_URL_Pattern                          PAPIPassURLPattern
Lcook_Timeout                             PAPILcookTimeout
CRC_Timeout                               Not implemented
URL_Timeout                               PAPIURLTimeout
Max_TTL                                   PAPIMaxTTL
PAPI_AS                                   PAPIAS
PAPI_Filter                               PAPIFilter
Cookie_Reject                             PAPICookieReject
Hash_User_Data                            PAPIHashUserData
User_Data_Rewrite                         PAPIUserDataRewrite
Client_Address_In_Tokens                  PAPIClienteAddressInTokens
Attribute_Separator                       PAPIAttributeSeparator
Value_Separator                           PAPIValueSeparator
Max_Nonce_Errors                          Not implemented
Debug                                     Not implemented
PADATH_LAA_Handler                        Not implemented
PADATH_HDD_Handler                        Not implemented
PADATH_Institution_ID                     Not implemented
PADATH_Key                                Not implemented
PADATH_Permission_Set_Attribute           Not implemented
PADATH_User_Id_Attribute                  Not implemented
PADATH_AAP_TTL                            Not implemented
SPOCP_Server                              Not implemented
SPOCP_Action                              Not implemented
SPOCP_Accept_If_Down                      Not implemented
GPoA_URL                                  PAPIGPoAURL
Req_DB                                    PAPIReqDB
GPoA_Priv_Key                             PAPIGPoAPrivKey
GPoA_Rewrite                              PAPIRewrite
GPoA_Hash_User_Data                       PAPIHashUserData
Remote_URL                                Not implemented
Remote_Domain                             Not implemented
Local_IP_Address                          Not implemented
Proxy_Server                              Not implemented
No_XML                                    Not implemented
Rewrite_MIME_Types                        Not implemented
HTTP_Auth                                 Not implemented
Form_Processor                            Not implemented
PAPI_Redirect                             Not implemented
PAPI_Redirect_by_URL                      Not implemented
PAPI_POST_Redirect                        Not implemented
PAPI_Header_Redirect                      Not implemented
Rewrite_URL_Pattern                       Not implemented
Reject_URL_Pattern                        Not implemented
Eval_Proxy_Redirects                      Not implemented
Proxy_Chunk_Size                          Not implemented
Redirect_All                              Not implemented

PAPI_Main and PAPI_Local are not longer necessary. You can 
use the tags in the Server or Location sections of your config 
file.

(1) PAPILkey recives a key as parameter and not a file. If 
    you don't configure it, mod_papi will generate one 
    automatically every time you restart apache.
    
New tags
--------

PAPIReqDBPath
PAPIKeysPath
PAPIWAYF
PAPIRemoteUserAttribute
PAPILazySession
PAPILcookMaxTimeout
     
Universitat de Valencia

 PAPI-SSO (Single Sign On)