He estado sacudiendo mi cabeza contra esto por un tiempo, y estoy empezando a progresar. Sin embargo, me encontré con algunos problemas para convertir una representación de cadena de una aserción SAML 2 (en XML) en un objeto de aserción.Creando Aserción de OpenSAML desde un XML dado en Java
Parece que estoy obteniendo un org.w3c.dom.Document
válido con los datos apropiados, y parece que estoy obteniendo un SAMLObjectBuilder<Assertion>
válido de la fábrica de constructores, pero cuando intento juntarlos todo lo que obtengo es una Afirmación en blanco; el sujeto, el emisor, el tiempo de emisión, etc. son null
, a pesar de estar claramente establecidos en el XML.
¿Alguien ve lo que estoy haciendo mal y puede sugerir una solución?
Document doc = loadXMLFromString(saml);
XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();
SAMLObjectBuilder<Assertion> assertionBuilder =
(SAMLObjectBuilder<Assertion>)
builderFactory.getBuilder(Assertion.DEFAULT_ELEMENT_NAME);
Assertion assertion = assertionBuilder.buildObject(doc.getDocumentElement());
String nameID = assertion.getSubject().getNameID().getValue();
En la asignación NameID, assertion.getSubject()
vuelve null
, en su defecto el resto de la expresión.
El ejemplo que estoy usando es el XML completo de SSTC-saml tecnología-panorama-2,0-proyecto-03, página 10.
La función loadXMLFromString()
anterior está tomada en su mayoría de In Java, how do I parse XML as a String instead of a file?
No editamos el nombre de la pregunta con '[SOLUCIONADO]' aquí. Si tiene su respuesta, márquela con la marca verde a la izquierda; su pregunta solo se marcará como "resuelta". – marcog
@marcog Intenté eso al principio, pero no pude marcar mi propia respuesta como aceptada antes del final del período de gracia de 48 horas, y con toda la búsqueda que hice para encontrar una solución, pensé que era lo suficientemente relevante como para dejar la pregunta en torno en lugar de eliminarlo –
Es genial que hayas publicado una auto-respuesta. Demasiadas personas simplemente se van. +1 a ambas preguntas y respuestas por hacerlo! – marcog