Problema para integrar saml con araí usuarios

Hola a todos,

Estoy trabajando en el desarrollo de un sistema en Laravel que requiere integración con el sistema de Araí usuarios para solicitar informacion de agentes, esto lo quiero hacer a través de SAML. Configuré todas las conexiones necesarias y establecí el URL de inicio de sesión que redirige a SimpleSAMLphp. El problema es que al intentar acceder a este enlace, me encuentro con un error en una página de Cin SIU.

Cuando intento acceder manualmente al inicio de sesión de Araí, me doy cuenta de que el enlace real es más complejo y contiene un parámetro AuthState, por ejemplo:

Informe de error enviado… etc

Para descartar que el problema sea en el codigo, use la pagina https://samltest.id/start-idp-test/ utilizando el identityID y me encuentro con el mismo problema de redireccionamiento.

¿Alguien podría orientarme sobre cómo solucionar este problema?

Hola Marcos,

voy a ir centralizandote todos los temas en este, asi no spammeamos innecesariamente.

Segun entiendo de los otros temas finalmente lograste conectar la aplicacion Laravel contra Arai-Usuarios pero tenes un problema con la vuelta.

Quisiera ver que configuracion tenes para el cliente SAML (Onelogin) y por otro lado, me serviria si podes subirme un par de capturas del abm de aplicaciones de Arai-Usuarios donde se vean las 2 primeras pestañas.

Tene en cuenta que la vuelta del IDP se hace mediante un POST al endpoint especificado como ACS, ahi se chequea la validez de la asercion etc y si todo va bien tu aplicacion tiene que leer la data del token.

No te puedo dar soporte de Laravel porque no conozco como lo esta laburando internamente… pero las configs comunes de SAML deberian ser similares. Fijate en el cliente si no te deja alguna causa posible en el log del mismo, quizas es algo sencillo.

Saludos




Esa es la configuración que tengo actualmente, lo que hace es que me lleva al Loguin de Ara, le coloco credenciales validas y al redireccionar al http://localhost:8085/saml/acs y ahí me indica un error 419 que es PAGE | Expired

Hola Marcos,

por lo que veo la configuracion pareciera estar correcta, al menos los endpoints definidos son coherentes con lo que usamos nosotros.

Lo unico que me llamo la atencion de todo lo que subiste, es que el Controller esta definiendo un CSRF token pero no alcanzo a ver como es que eso se le haria llegar al IDP para que cuando haga el request via POST lo incluya.

Digamos, si el metodo acs intenta validar el token… como lo recuperaria del request?

y ahí me indica un error 419 que es PAGE | Expired

Por eso te mencionaba el tema del log, el cliente SAML de Onelogin suele dejar informacion de debug en el log… lo que muchas veces te permite determinar de una manera mas directa si es un tema con el protocolo (cert invalido, fecha corrida, etc) o si esta en el framework/aplicacion por decir algo.

Saludos

Hola Ricardo, gracias por contestar. lo del CSRF es porque no me redireccionaba y luego de revisar bastante llegue a que esperaba ese token. Si yo aun me estoy familiarizando con este tipo de desarrollo siempre hice los usuarios y roles en la misma aplicación.

Hola Ricardo ahí lo volví a revisar y encontre algunas cosas que no iban. Después de eso probe y funciona correctamente. Muchas gracias por la ayuda.
Voy a documentar como lo hice y lo voy a subir.

Hola Marcos,

te iba a comentar algo sobre las URLs cargadas en Arai-Usuarios (muy estilo Toba) pero veo que lograste resolverlo y dejarlo andando. Felicitaciones!

Genial, vendria muy bien por si hay alguien mas que este laburando con Laravel y se tope con algo asi. Gracias

Saludos

Documentacion_SIU_ARAI.pdf (465,8 KB)
Subo una primera versión después veo de poder mejorarla.
Gracias @richard por tu ayuda y cualquier cosa deje mi correo institucional de la universidad.

@richard Consulta yo logre el ida y vuelta al arai usuario pero aun no me queda claro el proceso después de eso. Supongo que tendría que validar el usuario contra los que tenga en mi aplicacion pero no me queda muy claro como. Veo lo que me llega al volver del arai pero no veo nada con lo que pueda validar mi usuario en mi app.

Hola Marcos,

todo depende como gestiones los usuarios en tu aplicacion, si utilizas auto-aprovisionamiento via persistent-id no tenes mucha mas opcion que intentar recuperar algun permiso o perfil en tu aplicacion para confirmar que el usuario existe.

Si no existe, ahi es donde deberias decidir que hacer… en ppio crearias uno o emitirias un error, si es que necesita de algun paso manual el registro.

En cualquier caso, como minimo deberias tener localmente en la aplicacion (o algun server aparte) los permisos de acceso de dicho usuario, con lo cual podrias validar que existe.

Saludos

Claro yo a eso lo entiendo correctamente, lo que no entiendo es que si Arai usuarios te devuelve una identificación o algo para reconocer el usuario. Ahora pensándolo rapido me imagino usar sessions para guardarme los datos que envió al arai usuarios y luego ya validar los permisos en mi aplicación

Hola Marcos,

en el token SAML vienen varios datos, entre ellos la cuenta que esta registrada en Arai-Usuarios para dicho SP, lo ideal sin embargo seria que puedas utilizar el persistentID (al menos de forma interna) como identificador univoco ya que no depende de interaccion humana sino que lo genera internamente el IDP y siempre sera el mismo para esa combinacion SP y Usuario.

Es que los permisos los tendrias asociados (suponiendo que los manejes dinamicamente) al identificador univoco que te mencionaba arriba.

Si estas pensando en algun dato en particular, fijate en esta pagina si te sirve para agregarlos de alguna manera o si es alguno de los que ya posee SAML

Saludos