Foros de consultas y discusión

Implementacón de referencia de SSO en OpenSAML v3.2

Andrés Teigeira, modificado hace 6 años.

Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Estimados le cuento que seguí las instrucciones del documento para realizar la implementación de prueba del SSO.

Luego de cargar el proyecto "maqueta" en NetBeas IDE 8.2 me marcaba algunos errores en las clases por falta de algunas dependencias las cuales termine agregando de forma manual al proyecto, una vez hecho esto los errores desaparecieron. 

El problema es que al momento de hacer Build del proyecto me sale un error indicando que no se puede resolver las dependencias (Adjunto Output.txt y pom.xml).

No tengo mucha experiencia con NetBeans, por lo que les pido si me pueden ayudar a resolver el problema.


Mi idea es comenzar implementando este ejemplo “básico”, para luego basándome en el poder implementar el SSO registrando un nuevo SP en testing y luego otro en producción.

​​​​​​​Muchas gracias!




 
thumbnail
Francisco Perdomo, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Padawan Mensajes: 36 Fecha de incorporación: 27/03/17 Mensajes recientes
Buenas Andrés, de principio de hago un par de comentarios para que corramos el proyecto en las mismas condiciones: 
La versión de java que estás usando es 1.8 y la que yo usaba era 1.7, puede que no vaya por ahí el problema pero nos ahorramos la duda.
El pom que me mandaste tiene forzada la versión de varias dependencias, no vería el problema de dejarlo como estaba:  <version>${opensaml.version}</version>
Además, hay dependencias que agregaste, como opensaml-security-impl, joda-time,opensaml-xmlsec-impl y otros que en realidad ya vienen contenidos dentro del repositorio de shibboleth que está al final, no descarto la posibilidad que las versiones de las dependencias agregadas sean incompatibles con las que hay en el repo y ahí genere alguna inconsistencia. 

Te recomiendo volver a descargar el pom de git y probar nuevamente.

Cuando empecé a programar este proyecto recuerdo haber agregado a mano varias dependencias pero antes de subirlo a git estoy seguro que ese problema ya no me ocurría y era tan simple como correrlo y las dependencias se bajaban solas

No dudes en volver a preguntar si siguen habiendo problemas, estoy a las órdenes,

Saludos,

Francisco Perdomo
thumbnail
Francisco Perdomo, modificado hace 5 años.

División del hilo de discusión

Padawan Mensajes: 36 Fecha de incorporación: 27/03/17 Mensajes recientes
Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Hola Francisco, muchas gracias por tu pronta respuesta.

Realice los cambios que mencionaste y el error aún sigue apareciendo, y como se ve en la captura que adjunto (captura.png) al restaurar pom.xml volvieron los errores en las clases por las dependencias que faltan. (Adjunto pom1.xml y Output.txt )

Creo que el problema es con Maven, no sé si tendrá algo que ver  pero me olvide de mencionarte que no descargue Maven sino que utilice el que ya trae NetBeans.
En paso 3 del documento (Abre la consola y verifica mvn -v)  si bien previo a ejecutar el comando agregue la variable de sistema "MAVEN_HOME" el comando no me funciona sino me paro en el directorio "C:\Program Files\NetBeans 8.2\java\maven\bin".

Se te ocurre algo que pueda probar.

​​​​​​​Gracias!

 


 
Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Francisco,  te cuento que ya pude resolver el problema y la aplicación quedo funcionando correctamente.

Básicamente lo que hice fue reiniciar NetBeans e importar nuevamente el proyecto, al hacerlo esta vez se cargaron correctamente todas las dependencias. Me quedan dudas, después de haber probado tantas cosas cuál de ellas realmente resolvió el problema.

Nota: Algo que me faltaba que quizás se da por sobrentendido pero en el documento no se menciona, es que hay que editar la variable del sistema “Patch” agregándole la ruta al “/bin” de Maven.


Muchas gracias por tu ayuda !



 
Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Ahora tengo el siguiente problema: Luego que me autentico el IdP me redirige a https://maquetasaml.gub.uy:8443/maqueta/acs  y me da error 404 Not Found. (Ver Imagen adjunta)

Para configurar https en mi ambiente de desarrollo cree un keystore con un certificado autofirmado con los mismos datos que figuran en SPCredential.java (no tengo claro si esto debe ser así) 

    private static final String KEY_STORE_PASSWORD = "123456";
    private static final String KEY_STORE_ENTRY_PASSWORD = "123456";
    private static final String KEY_STORE_PATH = "/KeystoreSAML.jks";
    private static final String KEY_ENTRY_ID = "maquetasaml";

Seguramente me este faltando configurar alguna otra cosa.

¿Alguna idea de la causa del problema?

Gracais !

Archivos adjuntos:

Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Hola, el error que me esta apareciendo ahora al recibir el "Authentication Response Assertion" en "https://maquetasaml.gub.uy:8443/maqueta/acs" es el siguiente:

Error processing request
Context Path:
/maqueta
Servlet Path:
/acs
Path Info:

Query String:

[b]Stack Trace[/b]
net.shibboleth.utilities.java.support.logic.ConstraintViolationException: Validation credential cannot be null
net.shibboleth.utilities.java.support.logic.Constraint.isNotNull(Constraint.java:227)
org.opensaml.xmlsec.signature.support.provider.ApacheSantuarioSignatureValidationProviderImpl.validate(ApacheSantuarioSignatureValidationProviderImpl.java:51)
org.opensaml.xmlsec.signature.support.SignatureValidator.validate(SignatureValidator.java:54)
com.mycompany.maqueta.acs.doPost(acs.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:285)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:264)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:175)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:792)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)

Espero me puedan ayudar, Gracias!
thumbnail
Francisco Perdomo, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Padawan Mensajes: 36 Fecha de incorporación: 27/03/17 Mensajes recientes
Buenas, disculpa la demora en contestar estuve ausente toda la semana, po lo que veo ya resolviste el primer tema del 404.
Para resolver este tema te pido que captures el Authentication response, puedes hacerlo en el navegador, pero tambien fijate si el programa corre hasta el punto que lo procesa y lo imprime por consola. Los assertion tienen información relevante para el debugging. Fuerza que ya te queda poco para dejarlo 100%!

Saludos,

Francisco Perdomo
Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Hola Francisco, adjunto archivo "AuthenticationResponse.xml" con la respuesta. Mirando la misma no pude darme cuenta que es lo que esta mal.

Saludos.
thumbnail
Francisco Perdomo, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Padawan Mensajes: 36 Fecha de incorporación: 27/03/17 Mensajes recientes
Parece ser que el programa no está encontrando el certificado de Agesic-Coesys-Testing.cer, recuerdo que me pasó que como la ruta está marcada como relativa a veces el programa la toma como absoluta y la busca en el disco C. Prueba copiar el certificado en el disco para asegurarse que el problema está en que no encuentra la ruta.
Si ese es el caso, busca como hacer para que te tome la ruta relativa hacia el certificado y ya debería quedar todo andando.

Saludos y cualquier consulta a las órdenes,

Francisco Perdomo
Andrés Teigeira, modificado hace 6 años.

RE: Implementacón de referencia de SSO en OpenSAML v3.2

Youngling Mensajes: 7 Fecha de incorporación: 12/07/17 Mensajes recientes
Francisco, efectivamente ese era el problema, estaba buscando el archivo  "Agesic-Coesys-Testing.cer" en directorio "C:\".

Para que funcione correctamente copie el certificado al directorio del jboss y modifique la clase "CredencialIDP" de la siguiente manera:
​​​​​​​
.........
..............
​​​​​​​ ..............
// obtengo el camino absoluto de la carpeta \bin de tomcat o jboss en este caso
    String directorio = System.getProperty("user.dir");
// obtengo Carácter separador en una ruta de acceso de archivo.
    String separador = System.getProperty("file.separator");
    InputStream in = new FileInputStream( directorio + separador + ".." + separador + "Agesic-Coesys-Testing.cer");
    CertificateFactory factory = CertificateFactory.getInstance("X.509");
.............
..........
.........

Gracias por tu ayuda.

Saludos.