Problemas con SAML

Hola, Feliz Año!

Les cuento que estoy probando SSO en Mapuche. Ya hicimos las pruebas correspondientes a CAS con un servidor de UNICEN y ahora estoy intentando hacer andar SAML guiandome con las notas de Toba y los instructivos de SAML, pero me esta dando un error.

La estructura de archivos es la siguiente:

  • C:\siu\220Alpha8-12809\mapuche\

  • instalacion\

  • toba\php\3ros
    [list]

  • simplesamlphp\

[/list]

Al entrar a mi instalación de Mapuche (con el login de SAML) veo la pantalla con los Warning:

  • Warning: parse_ini_file(C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata/…/…/…/…/instalacion/saml.ini) [function.parse-ini-file]: failed to open stream: No such file or directory in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 3

  • Warning: Invalid argument supplied for foreach() in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 4

Ver imagen adjunta: saml1.png

saml20-idp-remote.php contiene el parseado de saml.ini pero en Mapuche debe hacerse una indireccion mas para llegar a la carpeta instalación por lo que debe modificarse:

    $ini = parse_ini_file(dirname(__FILE__).'/../../../../instalacion/saml.ini',true);

a

     $ini = parse_ini_file(dirname(__FILE__).'/../../../../../instalacion/saml.ini',true);

Luego, vuelvo a acceder y ya me muestra correctamente el nombre del IdP que antes no cargaba pero ahora los Notice que se producen son a causa de que esta intentando levantar atributos propios del [idp] dentro de los arreglos de [basicos] y [sp] en saml.ini y no los encuentra.

  • [b]Notice:[/b] Undefined index: name in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 12
    
  • [b]Notice:[/b] Undefined index: SingleSignOnService in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 14
    
  • [b]Notice:[/b] Undefined index: certFingerprint in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 15
    
  • [b]Notice:[/b] Undefined index: SingleLogoutService in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 18
    
  • [b]Notice:[/b] Undefined index: name in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 12
    
  • [b]Notice:[/b] Undefined index: SingleSignOnService in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 14
    
  • [b]Notice:[/b] Undefined index: certFingerprint in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 15
    
  • [b]Notice:[/b] Undefined index: SingleLogoutService in C:\siu\220Alpha8-12809\mapuche\toba\php\3ros\simplesamlphp\metadata\saml20-idp-remote.php on line 18
    

Ver imagen adjunta: saml2.png

Selecciono y paso al login (toba:toba)

Ver imagen adjunta: saml3.png

Luego de eso, me da errores de la biblioteca y la pantalla en blanco.

http://localhost/simplesaml/module.php/core/loginuserpass.php?

  • Notice: Use of undefined constant OPENSSL_PKCS1_PADDING - assumed ‘OPENSSL_PKCS1_PADDING’ in C:\Apache Software Foundation\Apache2.2\htdocs\simplesaml\lib\xmlseclibs.php on line 265
  • Fatal error: Call to undefined function openssl_get_privatekey() in C:\Apache Software Foundation\Apache2.2\htdocs\simplesaml\lib\xmlseclibs.php on line 413

Hice un Find in Files de toda la carpeta con la constante OPENSSL_PKCS1_PADDING pero no está definida en ningun lado.
Luego encontre que debería estar definida por PHP.

http://php.net/manual/es/function.openssl-public-decrypt.php

Con respecto a la función openssl_get_privatekey() la encontré como un alias definido por PHP para openssl_pkey_get_private()

http://php.net/manual/es/function.openssl-get-privatekey.php

Hice la sustitución del alias pero tampoco funcionó así que descarto que sea por la versión de PHP (ademas la descripción del alias dice (PHP 4 >= 4.0.4, PHP 5)).

No se que pueda llegar a estar pasando ahora.
Sospecho que me falta alguna lib en PHP, ¿puede ser?
Desde ya Muchisimas Gracias!


saml1.png

saml1.png

saml2.png

saml2.png

saml3.png

saml3.png

Hola, Feliz año,

Respecto a las librerías, esas funciones son de openssl, tenes instalado ese módulo en php? Por las dudas chequeá que tengas todos las que pide simplesaml

https://simplesamlphp.org/docs/stable/simplesamlphp-install#section_3

Por el resto de los notice habría que ver porque no los lee. Por ahí algún error de sintaxis, alguna linea que quedó comentada?

Saludos!

Perfecto! Muchas Gracias.
Faltaba incluir la dll de openssl.

En resumen, lo que me faltaba era:

  • Editar el php.ini y descomentar la linea que incluye la dll
extension=php_openssl.dll 
  • En php.ini asegurarse de tener
; On windows:
extension_dir = "c:/php/ext/"

que es la ruta donde tengo las extensiones php.[/li]

  • Agregar c:/php/ext/ a la variable de entorno del sistema PATH.

  • Luego de esto, al intentar reiniciar Apache obtuve una falla. Siguiendo una Nota de PHP copie el archivo Libeay32.dll (de c:/php) a la carpeta /bin de Apache y se resolvió.

Gracias por la ayuda!

Hola Lucas,

1.- Feliz Año!
2.- Por Fin!
3.- Subi el fix a la rama 2.6, esto lo habia reportado Pablo Bullian en su momento y estaba pendiente el ticket (vacaciones, fiestas, etc).

A partir de ahi deberia funcionarte sin problemas, tip: (No pongas un # en saml.ini para comentar algo… podes perder una tarde intentando saber por que razon Apache hace un core dump :D)

Saludos