Simplesamlphp como Idp
Instalación de un Idp con simplesamlphp
simpleSAMLphp tiene los siguientes requisitos:
PHP 7.0 o superior
Extensiones de PHP: date, dom, hash, libxml, openssl, pcre, SPL, zlib, mcrypt
Tras haberse asegurado de tenerlas todas, deberá descargar la última versión del software y descomprimirla en un directorio que no sea directamente accesible desde el servidor web. Por ejemplo:
# cd /var # tar xzf simplesamlphp-1.xxxxx.tar.gz # mv simplesamlphp-1.xxxxx simplesamlphp
Lo siguiente será indicarle al servidor web que debe servir cierto subdirectorio de simpleSAMLphp en una determina ruta. Por ejemplo, en Apache lo podría hacer añadiendo la siguiente definición a la configuración de un VirtualHost servido mediante SSL:
<VirtualHost *:443> # ... Alias /simplesaml /var/www/simplesamlphp/www # ... </VirtualHost>
Configuración
Empezamos la configuración editando el fichero habilitamos servicio IDP SAML2 editando el archivo /var/www/simplesamlphp/config/config.php de simpleSAMLphp y modifique los siguientes parámetros como se indica:
* admin.adminpassword: 'IngresarClaveParaAdministrar'
* admin.protectindexpage: false,
* secretsalt: es una cadena que servirá para la generación de elementos aleatorios. Se puede poner cualquiera, aunque se aconseja generarla de manera aleatoria con una orden como la siguiente:
$ tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | \ dd bs=32 count=1 2>/dev/null;echo
* technicalcontact_name: 'Administrador'
* technicalcontact_email: 'mailto:uncorreo@universidad.edu.ar'
* timezone: 'America/Argentina/Buenos_Aires'
* logging.handler: 'syslog'
* language.default: 'es'
* Habilitamos al simplesamlphp como Idp:
Linea 424:
'enable.saml20-idp' => true,
Linea 1060:
'store.type' =>'memcache',
creamos un certificado ssl autofirmado para el IDP:
# cd /var/www/simplesamlphp/cert/ # openssl req -x509 -newkey rsa:4096 -keyout server.pem -out server.crt -days 365 -nodes # chown -R www-data:www-data /var/www/simplesamlphp/cert
configuramos nuestro IDP SAML2 editando /var/www/simplesamlphp/metadata/saml20-idp-hosted.php
Desde linea 24:
'auth' => 'mi-ldap-local', 'redirect.sign' => true, 'name' => 'IDP nombre-X', 'redirect.validate' => true, 'assertion.encryption' => true,
Incorporamos una fuente de autenticación LDAP al IDP, editando el archivo /var/www/simplesamlphp/config/authsources.php
Desde linea 13 intercalar lo siguiente:
'mi-ldap-local' => array( 'ldap:LDAP', 'hostname' => 'ldap://localhost', 'referrals' => TRUE, 'attributes' => array( 'uid', 'cn', 'sn', 'mail', ), 'search.enable' => TRUE, 'search.base' => 'dc=ariudemo,dc=edu,dc=ar', 'search.attributes' => array('uid', 'mail'), 'search.username' => 'cn=admin,dc=ariudemo,dc=edu,dc=ar', 'search.password' => 'super123', ),