Autor Tema: Consulta integracion asp.net  (Leído 109 veces)

0 Usuarios y 1 Visitante están viendo este tema.

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Consulta integracion asp.net
« : enero 03, 2020, 04:11:20 pm »
Me pidieron que viera de integrar  un proyecto en asp.net a un Single Sign On (simpleSAMLphp) que está corriendo en arai/huarpe.
Estuve experimentando en mi proyecto con el Nuget Sustainsys.SAML.httpmodule, pero sin éxito.
Tanto la documentación de dicho Nuget, como la documentación para integrar sistemas "no SIU" es algo escasa.
Quería saber si alguien ya tiene experiencia o conocimiento con este caso, o con herramientas que permitan hacer lo mismo, que podría ser útil en integrar un sistema basado en Asp.net con Arai/Huarpe.

Cualquier información es bienvenida por más básica que sea.

Sergio F. Vier

  • Desarrollador SIU
  • Moderador Global
  • *****
  • Mensajes: 520
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Sergio Fabian Vier
Re:Consulta integracion asp.net
« Respuesta #1 : enero 03, 2020, 05:24:00 pm »
Hola Maximiliano!

Mira, te paso nuestra experiencia del lado SIU. Single SignOn es factible con cualquier tipo de aplicación compatible hoy con SAML versión 2.0. Este protocolo SAML está orientado u enfocado en aplicaciones tipo WEB, no así otras tipo mobile o desktop. Para eso requiere otras cosas...

Nuestra experiencia es al intentar integrar una app, usen extensiones como SAML Chrome Panel para depurar la interacción del lado del navegador (les va a permitir analizar que info envía el SP en la petición inicial hacia el IDP, que recibe y responde el IDP a su vez, etc).

Respecto a ASP.Net y la lib que referencias, no tenemos mucha idea al respecto... solo puedo divagar por el (código de ejemplo)[https://github.com/Sustainsys/Saml2/blob/master/Samples/SampleHttpModuleApplication/Web.config] y ver algunos parámetros que requieren datos  del IDP de Araí... van a tener que leer bastante aquí como se usa en .Net.

Por el lado Araí, podrías tomar como base lo de (Moodle)[http://documentacion.siu.edu.ar/wiki/SIU-Arai/Integracion/Moodle],  la parte importantes son:

1. En Araí,  es la sección "custom"  tienen que colocar el entityID, el AssertionConsumerService y SingleLogoutService de la app ASP.Net.
2. En la app ASP.Net tienen que configurarle (de alguna manera) la metadatada del IDP (la url de Araí, apuntando al IDP específicamente les lleva a un dashboard de admin, la pass se genera aleatoriamente al instalar), opcionalmente esepecificar el NameID policy, el mapping o que identificador usan para leer cual es el id del usuario (uniqueIdentifier es el estandar).

En mas o menos pasos, estarán trabajando con esos conceptos. Normalmente tenemos un módulo de consulta de metadatos tanto en el IDP como en un SP para verificar los datos.  Huarpe, como SP lo tiene por ej, (adjunto) un SP o app tipo Toba lo tiene o incluso como el IDP de Arai!

Ante cualquier inconveniente no duden en escribir... al menos del lado donde mirar las cosas SIU podemos guiarlos.

Saludos!

happy coding!!

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Re:Consulta integracion asp.net
« Respuesta #2 : enero 20, 2020, 12:54:37 pm »
He logrado progreso. Con mi idp de pruebas (https://stubidp.sustainsys.com/) logre enviarle un token SAML y obtener la respuesta adecuadamente y acceder a la informacion necesaria para loguearme en mi sitio.

Sin embargo, ahora estoy usando un IdP arai-usuarios de desarrollo y estoy recibiendo un mensaje de error:
SimpleSAML_Error_MetadataNotFound: METADATANOTFOUND('%' => '\\'http://localhost:7152/saml2/\\''), referer: http://localhost:7152/

Tengo entendido que es un problema que el IdP no reconoce al SP, pero sabria por donde empezar a decirle al IdP que reconosca dicho sitio

Nota: http://localhost:7152/saml2/ es donde se haya la metadata. Adjunto una imagen con la metadata de dicha url.

EDIT: Me dijeron que localhost puede no funcionar asi que ahora estoy probando todo lo mismo pero montado en un IIS y comunicandome con la ip de forma (https://123.123.123.123/default.aspx, https://123.123.123.123/saml2/acshttps://123.123.123.123/saml2,  o lo que haga falta)  pero sigue dandome el mismo error de METADATANOTFOUND.
¿Puede que a simplesamlphp no le agrade porque espera una url que termine en metadata.php o metadata.xml en ves de una que termine en /saml2? (simplesamlphp es mi IdP, y no puedo cambiarlo porque no es mi sistema)
« Última Modificación: enero 24, 2020, 08:52:30 am por mtarrabe »

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Re:Consulta integracion asp.net
« Respuesta #3 : enero 28, 2020, 02:09:25 pm »
(No se si va contra las reglas del foro el responder a mi propio ultimo comentario)
FInalmente logré conectar mi SP con el IdP, envio una SAML assertion, recibo la pantalla de logeo del IdP, y vuelvo a mi default.aspx; sin embargo, el SP no se logea automaticamente al recibir confirmacion del IdP que el usuario se logueó.
Considerando que la pass nunca viaja (y no deberia) en el token SAML... ¿como se supone que mi SP sepa que usuario se logueó en cuestion?
¿Se supone que unicamente verifique dicho usuario y el resto de las claims del token SAML y que eso sea suficiente?
¿Se supone que debo configurar o escribir codigo en mi SP para que esto suceda o deberia suceder por si solo?


Si alguien en el futuro tiene un problema similar al mio, pidame y subire en este post los detalles de mi configuracion funcionando cuando todo este proyecto termine...

richard

  • Moderador Global
  • *****
  • Mensajes: 2670
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Consulta integracion asp.net
« Respuesta #4 : febrero 04, 2020, 12:07:14 pm »
Hola Maximiliano,
(No se si va contra las reglas del foro el responder a mi propio ultimo comentario)
hasta donde se no hay regla contra eso, ni tendria sentido que lo hubiera tampoco asi que no te preocupes.

Citar
FInalmente logré conectar mi SP con el IdP, envio una SAML assertion, recibo la pantalla de logeo del IdP, y vuelvo a mi default.aspx; sin embargo, el SP no se logea automaticamente al recibir confirmacion del IdP que el usuario se logueó.
Considerando que la pass nunca viaja (y no deberia) en el token SAML... ¿como se supone que mi SP sepa que usuario se logueó en cuestion?
Entre la metadata que te devuelve el token SAML vienen una serie de atributos estandar que son parte del mismo, vos podes usar uno de esos o utilizar alguno de los que agrega Araí, todo depende a que dato quieras acceder.

Por ej: en SIU-Toba  usamos defaultUserAccount ya que para un sistema un mismo usuario puede tener varias cuentas, si no es tu caso podes utilizar algun otro para identificar al usuario ya sea uid, userID, uniqueID, etc.

En Arai-Usuarios al loguearte te muestra todos los campos que recibio en el token SAML y sus respectivos valores (al menos en desarrollo).

Citar
¿Se supone que unicamente verifique dicho usuario y el resto de las claims del token SAML y que eso sea suficiente?
Es una cuestion de confianza, le delegas al IDP la autenticacion del usuario... el te informa que se logueo JMFangio, si el mensaje es valido (esto lo deberia determinar la libreria que uses) y JMFangio es un usuario existente en tu aplicacion no hay mucho mas que puedas pedir.

Si es importante que verifiques que el token sigue siendo valido (eso tambien lo deberia proveer la libreria) para evitar dejar adentro a alguien que se deslogueo del IDP via otra aplicacion.
El tema de SLO es algo que evaluaras si tiene sentido o no, en nuestro caso van de la mano SSO y SLO.

Citar
¿Se supone que debo configurar o escribir codigo en mi SP para que esto suceda o deberia suceder por si solo?
Depende la funcionalidad que te provea la libreria, quizas debas realizar los chequeos de las assertions manualmente (no seria lo ideal) o no, lo mismo con la validez (por tiempo) del token y las redirecciones desde/hacia el IDP.

Lo que seguro vas a tener que incluir es el código para que una vez obtengas el usuario el mismo quede autenticado en tu aplicacion, el resto si lo podes delegar en la libreria mejor.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Re:Consulta integracion asp.net
« Respuesta #5 : febrero 04, 2020, 02:13:12 pm »
Gracias por la respuesta. En estos días logre que el SSO funcione IdP init y tambien SP init.
Actualmente un problema está relacionados a mi libreria y el otro problema es relacionado con el hecho que el IdP SimpleSAMLphp no está firmando las LogoutRequest.
Si alguien sabe algo relacionado a lo ultimo, apreciaría ver que saben al respecto. (Nótese que estoy al tanto de que para activar las firmas necesito un certificado y que archivos debo editar en el IdP, simplemente no lo está haciendo, y ya pregunte en los foros de SimpleSAMLphp)

EDIT: En el foro SimpleSAMLphp me dejaron saber que como estoy usando redirect la firma no es parte del token SAML, es parte de la URL. En cuanto tenga tiempo revisaré eso.
« Última Modificación: febrero 04, 2020, 04:00:58 pm por mtarrabe »

richard

  • Moderador Global
  • *****
  • Mensajes: 2670
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Consulta integracion asp.net
« Respuesta #6 : febrero 06, 2020, 11:23:11 am »
Hola Maximiliano,
Gracias por la respuesta. En estos días logre que el SSO funcione IdP init y tambien SP init.

buenisimo, osea que al menos ya podes loguear un usuario sin problemas.

Citar
Actualmente un problema está relacionados a mi libreria y el otro problema es relacionado con el hecho que el IdP SimpleSAMLphp no está firmando las LogoutRequest.
Si alguien sabe algo relacionado a lo ultimo, apreciaría ver que saben al respecto. (Nótese que estoy al tanto de que para activar las firmas necesito un certificado y que archivos debo editar en el IdP, simplemente no lo está haciendo, y ya pregunte en los foros de SimpleSAMLphp)
EDIT: En el foro SimpleSAMLphp me dejaron saber que como estoy usando redirect la firma no es parte del token SAML, es parte de la URL. En cuanto tenga tiempo revisaré eso.

Osea.. esta firmado pero en lugar de llegar con el token cae como un parametro via URL?, en dicho caso quizás tengas que incluir algo de código en el SP ya que según algunos issues que vi en Sustainsys están esperando que llegue firmado todo junto.
Segun el draft:
Citar
The <LogoutRequest> message MUST be signed if the HTTP POST or Redirect binding is used. The HTTP Artifact binding, if used, also provides for an alternate means of authenticating the request issuer when the artifact is dereferenced.

Asi que puede tratarse de alguna diferencia de interpretación entre ambos equipos.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Re:Consulta integracion asp.net
« Respuesta #7 : febrero 06, 2020, 11:45:29 am »
Ayer estuve chequeando... Se supone que si la firma esta en la URL, deberian haber claramente un parametro SigAlg que indique un algoritmo de encriptacion (usualemente SHA1 o SHA256) y un parametro más que se llama Sig cuyo valor es la firma en si. Ambos parametros se supone que son parte del estandar SAML y ninguno de ellos se encuentra en la URL.
Dicho eso, alguien tiene idea de como asegurarme que el IdP está usando los certificados correctos? Se supone que tengo un idp.crt y un arai-sync.key como claves publica y privada del IdP. He probado tratar de indicar al IdP que use dichos archivos, tambien he tratado usar la opcion certData y pegar la string del certificado en el metadata/saml20-sp-remote.php
Si alguien tiene conocimiento más profundo sobre como se supone que funciona el sistema de certificados y firma avise. Mientras tanto seguiré probando otras alternativas... (quiero intenter no tener que volver a generar certifiados en el IdP ya que no es mio y además ya está funcionando con otros SP que son del SIU, asi que supongo debe ser algo que se pueda solucionar solo tocando el sp-remote.php)

EDIT: Especificamente la URL luce como el siguiente ejemplo (si cieero sesion desde huarpe y no he abierto mi sitio):
https://desarrollo-arai-usuarios.unlam.edu.ar/idp/saml2/idp/SingleLogoutService.php?SAMLRequest=fZJRa8IwEMff%2FRSj77Zp2rQ1aGHgGAWnMMce9iJnc2qhTbpcOvz4q9UxlbE8hcv%2F97vkyJSgqVu5MHvTuVf87JDc6KFfx6bWJIfTmddZLQ1QRVJDgyRdKdePLwvJfSZba5wpTe3dYf9TQITWVUafsWI%2B81bLp8XquVhuSr4TOFFZEotdGkeqRMCUh6VSDIWANEyTOM227Iy%2Bo6XeM%2FN67UVG1GGhyYF2fZlxNmZ8zJK3UEjGpYg%2Bzrl5%2F9ZKgxvog3MtySBQSGCtqWszBgvVuKMObGXI73QNjY%2Bq88EGlWqD0yP5sFtXel%2FjeYZrtF9ViX57aL18aDM9BeVwKZv%2F0ebQN2jx1n9CggYdKHAwDa4NV85lP9ZinjeuV8EWL7lL9TfXyjXSaUaFVnjMN8B3CrdRBDzKxDZOkgx2gEnMVDRRkIkwjBIsYwEX4x0%2F%2BqnefJr8Gw%3D%3D&RelayState=http%3A%2F%2Fdesarrollo-huarpe.unlam.edu.ar%2Fsaml%2Flogout

Ahora si abri en algun momento mi sitio este es el LogoutRequest que le llega y rechaza porque no está firmado:
https://10.18.100.13/Saml2/logout?SAMLRequest=fVLbatwwEP0V43fbutiWLXYNgSWwkCZtt%2FShL8vYGiUCW3IlGfL5tb0NpIEGBBpGOjeNDgGmcZYP7tkt8Tv%2BXjDE5HUabZD7yTFdvJUOggnSwoRBxkFe7r48SJYTOXsX3eDG9B3kcwSEgD4aZ9PkfDqmV4SaE6hRcKE19rSitMWKqr7WmipSU9ZTFGwAlSY%2F0YcVeUxXohUewoJnGyLYuLYIIxlhGal%2F0EqSdYlfaXJa0xgLcUe9xDgHWRSU5LTJKVk3XlxWx6wY9%2Fhp8ujik33ydzqi%2F8hJyc7ZHbaQclf33RunwgDeu3F0GXgw2RIW8MaFfLEjTDmqJQdfGDUXYRfcqgkjKIiQzy%2FzoXjPepN4XB%2FvfEouX7fi2wKj0Waz9f8caXLv%2FATx8xFsHaMyvV%2BV0YMNBm1Mu6umvAXGBQjO26HHtq17oQgZSsVI23KoSlrqpqn4X783ize%2Fs7xg2OZztgpfuysF0dSlaEXTq0pwYJqBpoJSrlvdVFXf0H7Akg%2FiRvYB%2F9b852d2fwA%3D&RelayState=_4c0e026a59a922eb284d03b87cb7550755443e35fb

Lo mismo. SAMLRequest y RelayState.

No puedo hacer que el SP no pida LogoutRequests no firmadas ya que el autor de la libraria dice que va en contra del estandar SAML y es un riesgo de seguridad. Pero si se que SimpleSAML puede activar la firma de dichos mensajes.

EDIT4: Estuve tocando el saml20-sp-remote.php equivocado todo el tiempo... SLO funciona perfecto, y las LogoutRequest estan siendo firmadas. Mi ultimo problema es convenser a la libreria Sustainsys que "ejemplo.com/saml2/logout" es una URL no relativa asi el get_query no me tira error. Revisaré el mailing list de Sustainsys y si tengo éxito reportaré aqui.
« Última Modificación: febrero 07, 2020, 12:25:26 pm por mtarrabe »

richard

  • Moderador Global
  • *****
  • Mensajes: 2670
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Consulta integracion asp.net
« Respuesta #8 : febrero 10, 2020, 10:16:30 am »
Hola Maximiliano,
Dicho eso, alguien tiene idea de como asegurarme que el IdP está usando los certificados correctos? Se supone que tengo un idp.crt y un arai-sync.key como claves publica y privada del IdP. He probado tratar de indicar al IdP que use dichos archivos, tambien he tratado usar la opcion certData y pegar la string del certificado en el metadata/saml20-sp-remote.php

me detengo aca por lo que te marque en negrita, arai-sync.key no es la clave privada del IdP... es la clave que se usa para realizar la sincronizacion/adhesion etc de tu aplicacion contra Arai-Registry.
Dicho de otra manera, el IdP no tiene porque usar arai-sync.key como clave privada, deberias tener un par key/crt como en cualquier sitio web con SSL (que ademas lo usa para firmar los request).

Citar
EDIT4: Estuve tocando el saml20-sp-remote.php equivocado todo el tiempo... SLO funciona perfecto, y las LogoutRequest estan siendo firmadas. Mi ultimo problema es convenser a la libreria Sustainsys que "ejemplo.com/saml2/logout" es una URL no relativa asi el get_query no me tira error. Revisaré el mailing list de Sustainsys y si tengo éxito reportaré aqui.
A que sp-remote.php te referis?... si estabas agregando tu aplicacion al IdP en todo caso deberias haber modificado el archivo idp.yml que se encuentra dentro de la carpeta /config, fijate que hay una seccion service_provider , dentro de custom deberias haber incluido la configuracion para tu SP,  no deberia ser necesario que modifiques el archivo saml20-sp-remote.php directamente.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

mtarrabe

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
    • Email
  • Institución: UNLaM
  • Nombre y apellido: Maximiliano Tarrabe
  • Utilizo algun sistéma del SIU: Sí
Re:Consulta integracion asp.net
« Respuesta #9 : febrero 10, 2020, 06:10:46 pm »
SI modifique el idp.yml adecuadamente.
El sp-remote no estaba en la carpeta por defecto (segun SimpleSAMLphp). YO esperaba que estuviera en config/saml20-sp-remote.php y estaba en config/carpetaEjemplo/saml20-sp-remote.php

De cualquier forma, ya logre tener el SSO y SLO funcionando, así que una vez que termine de corregir todas aquellas paginas que antes dependian de que hubiera una contraseña y ahora ya no la tienen, empezaré a replicar mi proceso con algun otro sistema y veré de crear una breve documentación del proceso.

Sergio F. Vier

  • Desarrollador SIU
  • Moderador Global
  • *****
  • Mensajes: 520
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Sergio Fabian Vier
Re:Consulta integracion asp.net
« Respuesta #10 : febrero 11, 2020, 10:36:42 am »
Hola Maximiliano!

Copado que hayan podido avanzar en la integración de su app ASP.Net. Cuando lo tengan aceitado, estaremos encantados de que escriban un mini howto al respecto, lo pondremos en la wiki así se visibiliza.

Saludos!
happy coding!!