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.