Incorporación de acceso de usuarios a Mapuche p/autenticacion = "saml_onelogin"

Hola.
Estamos intentando probar el acceso a usuarios a Mapuche por saml_onelogin. Nosotros no tenemos un entorno toba de desarrollo, por lo que estamos directamente trabajando sobre una aplicación de Mapuche instalada en un entorno de desarrollo. Por ende, tuvimos que copiar el proyecto toba_editor dentro de la ruta de toba/proyectos dado que no existía.

Agregamos el parámetro en el archivo instalacion.ini de la ruta /usr/local/mapuche/instalacion/

url = “/siu/mapuche_toba”
es_produccion = “1”
autenticacion = “saml_onelogin”

Tomamos el archivo saml_onelogin.ini que viene con Toba, lo copiamos en /usr/local/mapuche/instalacion/ y lo modificamos según el siguiente detalle, dado que tenemos ya definido un idp por simplesaml para todo el mpf (no tenemos claro si nos falta desmarcar algo más):

==========================================================
;Archivo de configuracion para el metodo onelogin via saml

[basicos]
;atributo_usuario = uid
;permite_login_toba= 0

[sp]
auth_source = default-sp
;session.phpsession.cookiename = TOBA_SESSID
idp = https://test-simplesaml.mpf.gov.ar/simplesaml/saml2/idp/metadata.php

;Necesita si o si definirle un proyecto por default para loguearse, esto va a determinar las urls de retorno y el entityID del SP
proyecto_login = mapuche

[idp:https://test-simplesaml.mpf.gov.ar/simplesaml/saml2/idp/metadata.php]
;name = service.example.com
SingleSignOnService = https://test-simplesaml.mpf.gov.ar/simplesaml/saml2/idp/SSOService.php
SingleLogoutService = https://test-simplesaml.mpf.gov.ar/simplesaml/saml2/idp/SingleLogoutService.php
;certFile = /opt/certificates/certExample.cert

Nos está faltando modificar el archivo metadata/saml20-sp-remote.php del servidor donde está la aplicación de Mapuche ???

$metadata[“$URL_PROYECTO/default-sp”] = array(
‘AssertionConsumerService’ => “$URL_PROYECTO/?acs”,
‘SingleLogoutService’ => “$URL_PROYECTO?/sls”
);

Y tenemos entendido que tenemos que ejecutar

toba proyecto actualizar_login -p mapuche -i produccion

no se si al ejecutar eso se genera el archivo que está faltando.

Nos podrán orientar si vamos por el camino acertado.

Gracias.

Grace

Hola, dejo una transcripción del mail interno que mande a mis compañeros en su momento para poder usar SAML. Como verán se utiliza un servidor en nuestra red interna que llamamos Chiquita. Deberían reemplazarlo por el suyo en cada caso.
Es toda la información que les puedo brindar en este momento. En todo caso vamos viendo problemas puntuales que puedan ir surgiendo si no les funciona.
Por otro lado, tengan en cuenta que Mapuche ya viene preparado para utilizar SAML desde la version 2.2.0 publicada el 23/1/2015, por lo que no necesitan el proyecto Toba Editor ni nada relacionado al desarrollo (como actualizar login).

Hola, hoy les voy a contar como configurar Mapuche para poder acceder con SAML y realizar pruebas.

Hay dos partes esenciales en SAML: el proveedor de servicio, abreviado SP por sus siglas en ingles (Service Provider) y el proveedor de idenficiación, IdP (Identity Provider).

El primero viene cargado en toba como un producto de terceros: toba/php/3ros/simplesamlphp
El segundo, debemos instalarlo nosotros (el código es el mismo que el SP solo que se configura diferente).

Para configurar el SP pueden seguir la guía de la wiki de Toba con SimpleSAML.
Para tener en cuenta como complemento de esta guía:
Edición del saml.ini
;URL del idp a utilizar
idp = http://192.168.132.116/simplesaml/saml2/idp/metadata.php

;Esto permite configurar el idp puntual que se consume arriba
[idp:http://192.168.132.116/simplesaml/saml2/idp/metadata.php]
name = IdP Chiquita
SingleSignOnService = http://192.168.132.116/simplesaml/saml2/idp/SSOService.php
SingleLogoutService = http://192.168.132.116/simplesaml/saml2/idp/SingleLogoutService.php

El alias del SP en toba.conf debe ser igual al parámetro baseurl definido en saml.ini
Como pueden ver, usamos un IdP instalado en el servidor Chiquita (192.168.132.116). Esto es para facilitar la tarea de configuración ya que los nombres de servidores del SP y el IdP deben ser diferentes.

Ahora, para usar el IdP mencionado debemos hacer unos cambios en los metadatos de SAML (para que el IdP pueda responder al SP)
En chiquita,
Agregar el metadato propio para tu ip (esta comentado el código que debe copiarse señalado):
Editar /var/www/html/simplesamlphp/metadata/saml20-sp-remote.php
Agregar tu usuario y contraseña con el que quieras ingresar (o el tipo de validación que cada uno quiera: SQL Query, LDAP, Google, Facebook, Twitter, etc.). Por defecto esta cargado toba:toba
Editar /var/www/html/simplesamlphp/config

Esos es todo.
Saludos!

Muchas gracias!
Cual sería la diferencia con usar saml_onlogin en vez de saml como recomiendan en la wiki de Toba?

Saludos.

Te reitero una consulta porque ni en la wiki ni en tu respuesta queda claro justamente lo que no tenemos claro como definir. En el mpf el IDP está en un servidor linux que usan todas las aplicaciones. En eso no hay dudas. El tema es que nos solicitan una url para setea en el SimpleSAML del IDP para que redirija al servidor de mapuche.
Obviamente el nombre de la url no es el problema sino a donde debe apuntar, porque no me queda claro. En https://repositorio.siu.edu.ar/trac/toba/wiki/Referencia/Login/SAML en el ejemplo menciona

[sp]
;URL donde se va a publicar el SP
baseurlpath = /toba_trunk_sp/ ???

Cual sería el alias?

adjunto el archivo mapuche.conf para que me lo puedan aclarar sobre dicho archivo.

SSLEngine on
SSLCertificateFile      /etc/ssl/mpf/MPF-Comodo.pem
SSLCertificateKeyFile   /etc/ssl/mpf/MPF-Comodo.key

<Directory /var/www/>
            Options FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

###############################################################

SITIO QUE APUNTA A LA BASE SIU

###############################################################

Alias /siu/mapuche_toba “/usr/local/siu/mapuche/toba/www”
<Directory “/usr/local/siu/mapuche/toba/www/”>
SetEnv TOBA_DIR “/usr/local/siu/mapuche/toba”
Options MultiViews
AllowOverride None
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all


Require all granted

    #Proyecto: toba_usuarios
    Alias /siu/mapuche_toba_usuarios "/usr/local/siu/mapuche/toba/proyectos/toba_usuarios/www"
    <Directory "/usr/local/siu/mapuche/toba/proyectos/toba_usuarios/www/">
            DirectoryIndex aplicacion.php
            Options MultiViews
            AllowOverride None
            <IfModule !mod_authz_core.c> 
                        Order allow,deny 
                        Allow from all 
            </IfModule> 
            <IfModule mod_authz_core.c> 
                        Require all granted 
            </IfModule>
            SetEnv TOBA_DIR                 "/usr/local/siu/mapuche/toba"
            SetEnv TOBA_PROYECTO    "toba_usuarios"         
            SetEnv TOBA_INSTANCIA   "produccion"
            SetEnv TOBA_INSTALACION_DIR "/usr/local/siu/mapuche/instalacion"
    </Directory>

    #Proyecto: mapuche
    Alias /siu/mapuche "/usr/local/siu/mapuche/aplicacion/www"
    <Directory "/usr/local/siu/mapuche/aplicacion/www/">
            DirectoryIndex aplicacion.php
            Options MultiViews
            AllowOverride None
            <IfModule !mod_authz_core.c> 
                        Order allow,deny 
                        Allow from all 
            </IfModule> 
            <IfModule mod_authz_core.c> 
                        Require all granted 
            </IfModule>
            SetEnv TOBA_DIR                 "/usr/local/siu/mapuche/toba"
            SetEnv TOBA_PROYECTO    "mapuche" 
            SetEnv TOBA_INSTANCIA   "produccion"
            SetEnv TOBA_INSTALACION_DIR "/usr/local/siu/mapuche/instalacion"
    </Directory>

#################################################################################

COMENTAMOS LAS LINEAS CORRESPONDIENTES AL SITIO VIEJO

#################################################################################

Alias /siu/mapuche_toba “/usr/local/siu/mapuche/toba/www”

<Directory “/usr/local/siu/mapuche/toba/www/”>

SetEnv TOBA_DIR “/usr/local/siu/mapuche/toba”

Options MultiViews

AllowOverride None

<IfModule !mod_authz_core.c>

Order allow,deny

Allow from all

Require all granted

#Proyecto: toba_usuarios

Alias /siu/mapuche_toba_usuarios “/usr/local/siu/mapuche/toba/proyectos/toba_usuarios/www”

<Directory “/usr/local/siu/mapuche/toba/proyectos/toba_usuarios/www/”>

DirectoryIndex aplicacion.php

Options MultiViews

AllowOverride None

<IfModule !mod_authz_core.c>

Order allow,deny

Allow from all

Require all granted

SetEnv TOBA_DIR “/usr/local/siu/mapuche/toba”

SetEnv TOBA_PROYECTO “toba_usuarios”

SetEnv TOBA_INSTANCIA “produccion”

SetEnv TOBA_INSTALACION_DIR “/usr/local/siu/mapuche/instalacion”

#Proyecto: mapuche

Alias /siu/mapuche “/usr/local/siu/mapuche/aplicacion/www”

<Directory “/usr/local/siu/mapuche/aplicacion/www/”>

DirectoryIndex aplicacion.php

Options MultiViews

AllowOverride None

<IfModule !mod_authz_core.c>

Order allow,deny

Allow from all

Require all granted

SetEnv TOBA_DIR “/usr/local/siu/mapuche/toba”

SetEnv TOBA_PROYECTO “mapuche”

SetEnv TOBA_INSTANCIA “produccion”

SetEnv TOBA_INSTALACION_DIR “/usr/local/siu/mapuche/instalacion”

Gracias!!!


mapuche_conf.txt (4.79 KB)

Hola!

Supongo que ninguna pero hoy Mapuche solo tiene incluido SimpleSAML (saml a secas). SAML On Login es otra implementación del mismo estándar.
Te dejo los enlaces a cada uno para que los consultes si te interesa. En todo caso se puede cargar un GdS pidiendo que se agregue el otro que Toba ya lo incluyó en sus libs de 3ros.

Hoy hice una instalación de Mapuche 3.1.1 y lo configure con un IdP que tenemos en un servidor de aca para probar. Con respecto a la guía lo único que note diferente es que hay que ir a modificar algunos archivos de Toba donde las rutas relativas quedan desfasadas. Hay que agregar un retroceso mas (‘/…’):


Cambiar donde dice:
$base = dirname(__FILE__).'/../../../../instalacion';
por
$base = dirname(__FILE__).'/../../../../../instalacion';

Los archivos son:
/toba/php/3ros/simplesamlphp/metadata/saml20-idp-remote.php linea 6
/toba/php/3ros/simplesamlphp/config/config.php linea 11

En el toba.conf (o su mapuche.conf) hay que agregar la definición del sp:


Alias /mapuche_311_sp "<ruta-a-mapuche-3.1.1>/mapuche/toba/php/3ros/simplesamlphp/www"
<Directory <ruta-a-mapuche-3.1.1>/mapuche/toba/php/3ros/simplesamlphp/www>
	<IfModule !mod_authz_core.c>
		Order allow,deny
		Allow from all
	</IfModule>
	<IfModule mod_authz_core.c>
		Require all granted
	</IfModule>
</Directory>

Recuerden que el alias debe ser igual a la configuración “baseurlpath” del archivo saml.ini (que tienen que haber creado como dice en la guía de Toba).

En el IdP tienen que haber agregado los metadatos del SP remoto: /metadata/saml20-sp-remote.php.
Para hacer las pruebas yo agregue un usuario y clave hardcodeado nomas.

Calculo que el SimpleSAML del IdP tiene que ser la misma versión que el SP.

No se me ocurre nada mas…
Sigan mandando las dudas puntuales que vayan surgiendo pero si siguen los pasos de la guía tiene que salir andando!

Saludos!

Buenísmo Lucas. Hemos avanzado bastante, pero te adjunto el error que tenemos ahora al ingresar a Mapuche.
Me llama la atención que busca el default-sp en ‘https://test-mapuche.mpf.gov.ar/siu/sp/module.php[u]/saml/[/u]sp/metadata.php/default-sp

Cuando debería hacerlo en ‘https://test-mapuche.mpf.gov.ar/siu/sp/module.php/[u]saml2[/u]/sp/metadata.php/default-sp

No encuentro ese path en ningún archivo y en las definiciones de las rutas solo incluimos hasta /www con lo cual lo otro lo debería tomar implícitamente.


Errorsamlmapuche.gif

Errorsamlmapuche.png

Hola, por las dudas probalo en una navegación privada o borrando cache del navegador. A mi me paso exactamente lo mismo. También me sucede eso si intento acceder como localhost pero si accedo por la ip de mi maquina me funciona (obviamente porque tengo el Mapuche y por ende el SP instalado en mi maquina).

Sino, deberías chequear que los metadatos no tengan errores de sintaxis o ejecución en el IdP. Yo para probar tengo algo básico donde hardcodeo un usuario (cuyo uid debe existir en la base de usuarios de Mapuche):


<?php
$config = array(
    'example-userpass' => array(
        'exampleauth:UserPass',
        'toba:toba' => array(
            'uid' => array('toba'),
        ),
        'mapuche:nomeolvides123' => array( // <-- Este sería el que ustedes gestionan (base propia de usuarios, LDAP, Sistema de archivos, etc.)
            'uid' => array('mapuche'), // <-- Este id debe existir en la base de usuarios de Mapuche (sino no te deja entrar! ;) )
        ),
    ),
);

En este caso creo dos usuarios: toba y mapuche, y sus contraseñas ‘toba’ y ‘nomeolvides123’ respectivamente.

Espero que sirva de ayuda!

Hola, Lucas. La gente de Aplicaciones ya lo pudo hacer funcionar. Muchas gracias por la colaboración.
Saludos.

Hola, que bueno!
Gracias por compartirlo.
Saludos!