Configurar un SP Apache con Mod_Mellon

Uno de los módulos apache para autenticar contra un IDP SAML2 es el mod_mellon. El mod_mellon viene de forma estándar en la mayoría de las distribuciones de Linux.

Instalarlo es pues directo. Mostramos el procedimiento en Linux Debian:

apt-get install libapache2-mod-auth-mellon    
a2enmod auth_mellon

Esto además ha creado ha creado la carpeta /var/cache/apache2/mod_auth_mellon/ para guardar los datos de los POSTS interceptados por la autenticación.

  • La Documentación se halla en:
    zcat /usr/share/doc/libapache2-mod-auth-mellon/README.gz | less
  • La Configuración GLOBAL se hace en:
    /etc/apache2/mods-available/auth_mellon.conf
  • Y la Configuración del SP se creará en una carpeta aposta accesible para el Apache. P.e.:
    mkdir /etc/apache2/mellon/
    chown www-data /etc/apache2/mellon/

Configuracion Apache

Mostramos un ejemplo de configuración del módulo dentro de la configuración del Apache.

En el ejemplo se protege el URI /miaplicacion dentro del servidor miaplicacion.uv.es. Se define como "endpoint" un lugar no existente dentro del URI anterior, en este caso miaplicacion/endpoint.php.

    MellonCacheSize 100
    MellonLockFile "/var/run/mod_auth_mellon.lock"
    MellonPostDirectory "/dev/shm"
    MellonPostTTL 900
    MellonPostSize 1073741824
    MellonPostCount 100
    <Location /miaplicacion/>
       Require valid-user
       AuthType "Mellon"
       MellonEnable "auth"
       MellonDecoder "none"
       MellonSecureCookie On
       MellonCookieDomain miaplicacion.uv.es
       MellonCookiePath /
       MellonUser "username"
       MellonEndpointPath "/miaplicacion/endpoint.php"
       MellonDefaultLoginPath "/"
       MellonSessionLength 86400
       MellonSPMetadataFile   /etc/apache2/mellon/miaplicacion_uv.xml
       MellonSPPrivateKeyFile /etc/apache2/mellon/miaplicacion_uv.key
       MellonSPCertFile       /etc/apache2/mellon/miaplicacion_uv.cert
       MellonIdPMetadataFile  /etc/apache2/mellon/as-idp-metadata.xml
       MellonProbeDiscoveryTimeout 1
       MellonSamlResponseDump Off
       MellonSessionDump Off
       MellonPostReplay On
    </Location>
  • CRÍTICO: el endpoint debe ser ACCESIBLE; es decir, antes de activar la protección el Apache debe dejar acceder. COMPROBARLO ANTES.

    P.e. en este caso debe responder sin errores a: "http://el.servidor.que.sea/miaplicacion/enpoint.php".

    CASO PARTICULAR: El Roundcube tiene definido un ".htaccess" que prohibe acceder a todo lo que no sea .php en su home. Por eso el endpoint es un ".php" y creamos un "endpoint.php" para que deje acceder a él:
    touch /var/www/miaplicacion/endpoint.php.
  • El directorio de datos de POST (MellonPostDirectory) se pone en disco RAM (/dev/shm). No es necesario que las sesiones permanezcan entre los arranques del servidor.

    Si por mal funcionamiento se llenara se puede borrar el contenido sin problemas. En funcionamiento normal se limpia a los 15m (MellonPostTTL 900)

Configuración del Mod_Mellon

Usar mellon_create_metadata.sh para crear los certificados y las claves. Los argumentos son el "EntityID" de nuestro SP (lo que nos convenga, pero determina el nombre de los ficheros creados) y el URL del endpoint.

Usarlo directamente en el directorio de configuración que hemos creado antes para el Mod_Mellon:

cd /etc/apache2/mellon/
wget http://as.uv.es/UVDOC/mellon_create_metadata.sh
mellon_create_metadata.sh miaplicacion-uv https://miaplicacion.uv.es/miaplicacion/endpoint.php/
  Output files:
  Private key:               miaplicacion_uv.key
  Certificate:               miaplicacion_uv.cert
  Metadata:                  miaplicacion_uv.xml
  Host:                      miaplicacion.uv.es

  Endpoints:
  SingleLogoutService:       https://miaplicacion.uv.es/miaplicacion/endpoint.php/logout
  AssertionConsumerService:  https://miaplicacion.uv.es/miaplicacion/endpoint.php/postResponse

Asegurarse de que los nombres de los ficheros (miaplicacion_uv.key, miaplicacion_uv.cert, miaplicacion_uv.xml) son los mismos que los configurados en el Apache.

Copiar los metadatos del IDP SAML de la UV en el directorio de configuración del mod_mellon:

cd /etc/apache2/mellon/
wget -O as.uv.es-idp-metadata.xml https://as.uv.es/saml/saml2/idp/metadata.php    
  

PASO FINAL IMPORTANTE

Copiar los metadatos del SP (el fichero miaplicacion_uv.xml) al IDP SAML2 de la UV. Contactar con el administrador del mismo.

Contraseña Proxy

El mod_mellon bajo el PAPI-AS de la UV pondrá la contraseña proxy la variable de entorno MELLON_PAPIauth. Si el programa la necesita, p.e. para acceder a un servidor de correo, adaptar el programa para que la utilize.

Universitat de Valencia

 PAPI-SSO (Single Sign On)