Configuración SAML

Hola.

Surgió la necesidad de obtener la constancia de examen final desde autogestión, para ello estamos integrando SAML, seguí todos los pasos indicados en la guia: http://documentacion.siu.edu.ar/wiki/SIU-Guarani/version3.17.0/interfaces/saml pero al intentar acceder a mi gestión me aparece el mensaje “Metadatos no encontrados
No se puede localizar los metadatos en ‘http://localhost/guarani/3.17/guarani-sql’”. Tambien cuando voy a http://localhost/simplesaml/module.php/core/authenticate.php y realizo la prueba para default-sp da el mismo error. A que puede deberse?

Esperando pronta respuesta.

Saludos.

María.

Hola María,

Nos podrías enviar los logs de la aplicación instalacion/i__desarrollo/p__guarani/logs/sistema.log y los logs de Apache sudo tail -f /var/log/apache2/error.log que se generan al momento del error.

saludos.
2

Adjunto los solicitados. Aclaro que estoy trabajando de manera local tanto con guaraní, autogestión y SAML.

Saludos!


logs_guarani_sistema_log.txt (464 KB)

apache_error_log.txt (828 Bytes)

Hola María, antes que nada gracias por los logs!!!

Revisa el paso 3 de la documentación, están bien configurados los datos de la DB en el archivo config/authsources.php?

Revisa también el paso 6 metadata/saml20-idp-hosted.php.

saludos.
2

Adjunto authsources.php si voy a la url http://localhost/simplesaml/module.php/core/authenticate.php en Test authentication sources, funcionan todas menos default-sp.
URL: http://localhost/toba_guarani3_sp/module.php/saml/sp/metadata.php/default-sp

SimpleSAML_Error_Error: UNHANDLEDEXCEPTION

Backtrace:
0 /usr/local/proyectos/idp-guarani/www/module.php:179 (N/A)
Caused by: Exception: saml20-idp-remote/‘http://localhost/toba_guarani3_sp/module.php/saml/sp/metadata.php/default-sp’['SingleSignOnService’]:Could not find a supported SingleSignOnService endpoint.
Backtrace:
4 /usr/local/proyectos/idp-guarani/lib/SimpleSAML/Configuration.php:1030 (SimpleSAML_Configuration::getDefaultEndpoint)
3 /usr/local/proyectos/idp-guarani/modules/saml/lib/Auth/Source/SP.php:271 (sspmod_saml_Auth_Source_SP::startSSO2)
2 /usr/local/proyectos/idp-guarani/modules/saml/lib/Auth/Source/SP.php:316 (sspmod_saml_Auth_Source_SP::startSSO)
1 /usr/local/proyectos/idp-guarani/modules/saml/www/sp/discoresp.php:37 (require)
0 /usr/local/proyectos/idp-guarani/www/module.php:134 (N/A)

Saludos!


authsources.txt (1.54 KB)

Hola María,

Parece que no configuraste (o esta mal configurado) el SingleSignOnService en el paso 2 de 3W, y en el paso 3 de Gestión.

<path proyecto 3w>/instalacion/saml/settings.php


        'singleSignOnService' => array (
            // URL Target of the IdP where the SP will send the Authentication Request Message
            'url' => $url_idp.'/saml2/idp/SSOService.php',
            // SAML protocol binding to be used when returning the <Response>
            // message.  Onelogin Toolkit supports for this endpoint the
            // HTTP-POST binding only
            'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
        ),

<path proyecto Gestión>/instalacion/saml_onelogin.ini


SingleSignOnService = http://idp.siu.edu.ar/saml2/idp/SSOService.php

Referencia: https://stackoverflow.com/questions/52081911/could-not-find-a-supported-singlesignonserviceendpoint

saludos.
4

Modifiqué como sugeriste 3w y gestión, cuando voy a acceder a guarani aparece el mensaje Not Found

The requested URL /saml2/idp/SSOService.php was not found on this server.
Apache/2.2.22 (Debian) Server at idp.siu.edu.ar Port 80

Hola María,

Creo que donde dice http://idp.siu.edu.ar hay que reemplazarlo por la URL de tu IDP [b]http://localhost/simplesaml[/b].

saludos.
2

Es lo que hice inicialmente y sigo sin poder acceder.

Metadatos no econtrados
No se puede localizar los metadatos en ‘http://localhost/guarani/3.17/default-sp

Información de depuración

La siguiente información de depuración puede ser de utilidad para el administrador del sistema o el centro de atención a usuarios:

SimpleSAML_Error_MetadataNotFound: METADATANOTFOUND(‘%ENTITYID%’ => ‘'http://localhost/guarani/3.17/default-sp\’')

Backtrace:
3 /usr/local/proyectos/idp-guarani/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:301 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaData)
2 /usr/local/proyectos/idp-guarani/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:318 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaDataConfig)
1 /usr/local/proyectos/idp-guarani/modules/saml/lib/IdP/SAML2.php:303 (sspmod_saml_IdP_SAML2::receiveAuthnRequest)
0 /usr/local/proyectos/idp-guarani/www/saml2/idp/SSOService.php:18 (N/A)

Adjunto una captura del error.


saml-error.jpg

saml-error.png

Hola María,

Parece que tenes mal configurado entityId.

Cambie unas cosas de la documentación que no estaban del todo bien.

saludos.
2

Hola, gracias por la respuesta anterior!

Removí de /usr/local/proyectos/guarani317/instalacion/saml_onelogin.ini el llamado a simplesaml y directamente tengo un error 404, estimo que es porque cuando quiero acceder a http://localhost/saml2/idp/metadata.php no existe mientras que si voy a http://localhost/simplesaml/saml2/idp/metadata.php si responde y muestra “Este archivo XML parece no tener información de estilo asociada. El árbol del documento se muestra debajo”
Además en la guía de configuración encuentro la siguiente diferencia en la url_sp en el archivo metadata/saml20-sp-remote.php
$url_sp = ‘http://localhost/toba_2.6_sp’ > tutorial
$url_sp = ‘http://localhost/toba_guarani3_sp’; > la que tengo y no responde

Probando acceder a $url_sp por el navegador muestra Forbidden y en error.log
client denied by server configuration: /usr/local/proyectos/guarani317/vendor/siu-toba/framework/php/3ros/simplesamlphp/www esta última carpeta no existe

Saludos!

Hola María, gracias por tu feedback!!!

Te comento que modifique la documentación para que quede un poco mas clara.

$url_sp lo podes ver en el archivo instalacion/toba.conf de Gestión, donde dice #Configuracion del SP de SAML

saludos.
2

Hola, vamos avanzando!

Al acceder a gestión http://localhost/guarani/3.17/ aparece la pantalla de login único, luego redirige a http://localhost/guarani/3.17/?acs donde tengo un error en el certificado: Signature validation failed. SAML Response rejected.
Adjunto logs de guaraní y apache2.

Saludos.


apache_error_log_saml.txt (6.52 KB)

log_error_saml.txt (3.49 KB)

Hola María, gracias por los logs!!!

Parece ser un problema de certificados (archivo server.crt), fíjate en el paso 11 de la documentación:
11. Generar certificados del server:


mkdir <path al idp>/cert
cd <path al idp>/cert
openssl req -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem

En el paso 2 de “Configurar SIU-Guaraní 3w” se genera y setea un “fingerprint”:
Generacion:

openssl x509 -noout -in <path al idp>/cert/server.crt -fingerprint

Seteo:

'certFingerprint' => 'XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX',

En el paso 3 de “Configurar SIU-Guaraní Gestión” también se configuran los certificados:

certFile = <PATH-IDP>/cert/server.crt

Referencia:
https://github.com/onelogin/php-saml/issues/216

saludos.
4

Hola, gracias por el mensaje anterior.

Modifiqué todo como indicado y tengo el siguiente error:
[Tue Apr 28 12:00:03.580572 2020] [php7:error] [pid 14178] [client ::1:36860] PHP Fatal error: Uncaught TypeError: Argument 1 passed to SimpleSAML_exception_handler() must be an instance of Exception, instance of ParseError given in /usr/local/proyectos/idp-guarani/www/_include.php:31\nStack trace:\n#0 [internal function]: SimpleSAML_exception_handler(Object(ParseError))\n#1 {main}\n thrown in /usr/local/proyectos/idp-guarani/www/_include.php on line 31

Según lo que busqué es un tema de versiones de simplesaml, actualmente uso php7.1 como solicitado en guarani3.

Que versión recomiendan?

Hola María,

Pasa lo que dice este post, le esta pasando un Error y no una Exception.

Igualmente habría que ver porque da ParseError, ya que eso es un error de sintaxis en el SAML.

Te pediría lo siguiente:
Edita el archivo www/_include.php función SimpleSAML_exception_handler, y cambia lo siguiente de forma temporal:


function SimpleSAML_exception_handler(Throwable $exception) {

    var_dump($exception->getMessage());
    var_dump($exception->getTraceAsString());
    
	if ($exception instanceof SimpleSAML_Error_Error) {
		$exception->show();
	} else {
		$e = new SimpleSAML_Error_Error('UNHANDLEDEXCEPTION', $exception);
		$e->show();
	}
}

Luego volve a probar, y veamos que mensaje de error muestra por pantalla (var_dump).

saludos.
4

Hola, esta es la respuesta de los var_dumps: string(43) “syntax error, unexpected ‘*’, expecting ‘]’” string(9) “#0 {main}”

Saludos!

Hola María,

Por lo que dice el error “syntax error, unexpected ‘*’, expecting ‘]’”, tenes un error de sintaxis en el código del SAML, quizás sin querer tocaste algún archivo. El problema es que esto al venir de un ZIP no te deja ver lo modificado con respecto al código original.

En los logs de Apache seguro te indica archivo y linea del error.

saludos.
4