XSLT-Transformation in XmlSignature Java?
-
11-12-2019 - |
Frage
Ich habe ein XML-Dokument. Ich unterzeichne einen Teil des Dokuments mit XMLSignature.Bevor ich Digest findet, möchte ich XSLT-Transformation anwenden.
Nach dem, was ich gelesen habe, wandelt XSLT ein
Wie kann ich den Wert aus diesem neu erstellten Dokument abrufen, wenn ich willum es dem Benutzer zu zeigen?
generasacodicetagpre.
generasacodicetagpre.
Gemäß der XPath-Transformation sollte der Wert des Benutzerelements die XMLSignature nicht validiert werden.Wenn sich der Wert des Personenteements ändert, sollte die Unterschrift validiert werden.Wenn ich jedoch den Wert des Personenteils ändere, wird die Signatur nicht validiert.Warum?
Lösung
Die beim Signieren eines Dokuments verwendete XSLT-Transformation betrifft, wie Knoten in Ihrer Quelle XML ausgewählt sind, wenn die Signatur berechnet wird.
Diese Frage / Antwort von Dave bezieht sich auf die Unterzeichnung von Teilen eines XML-Dokuments mit XPath2. Die Link Nach SEAN MULLANS 'POST In dieser Antwort sgibt sich, dass XPath2 eher für die Unterzeichnung von Teilen eines Dokuments geeignet ist, da die Auswertung eines XPath-Ausdrucks pro Knoten erfolgt.
so basierend auf dem Sun dsiig Beispiel Sie können die
Dies ermöglicht, dass // r1 / user mit einer Signatur geschützt werden, während der Rest des Dokuments geändert werden kann.
Das Problem mit der Auswahl der XPath / XPath2 ist, dass eine Signatur für
Sie können das Dokument in einem Testprogramm testen, indem Sie eine Signatur erstellen, dann mit dem XML-Knoten die Manipulation mit dem XML-Knoten vor der Überprüfung: generasacodicetagpre.
Eine zuverlässigere Alternative zu einem XPath-Wahlschalter ist möglicherweise darin, eine ID auf die XML-Dokumentelemente einzugeben, die Sie ansehen möchten, um sich anzumelden:
generasacodicetagpre.
Verweisen Sie dann diese ID als URI im ersten Parameter einer umhüllten Übertragung: generasacodicetagpre.
Für den Ausgang fügt ein Signaturvorgang dem DOM ein neues Signaturelement hinzu, das Sie im Speicher geladen haben. Sie können den Ausgang streamen, indem Sie es so umwandeln:
generasacodicetagpre.
Andere Tipps
Die XSLT-Spezifikation definiert nicht, was mit dem Ergebnisdokument passiert.Das ist durch die API-Spezifikationen Ihres ausgewählten XSLT-Prozessors definiert.Wenn Sie beispielsweise mit der JAXP-Schnittstelle XSLT von Java von Java aufrufen, können Sie das Ergebnis als DOM-Tree im Speicher bitten oder darauf, dass sie auf einer angegebenen Datei auf der Festplatte serialisiert werden soll.
Sie haben Ihre Frage mit Ihrer Frage mit "Java" getaggt.Meine Vermutung ist, dass Sie in ein DOM umwandeln möchten, und verwenden Sie dom-Schnittstellen, um den Wert aus dem neuen Dokument zu erhalten.Wenn Sie XSLT 2.0 und Saxon verwenden, ist die S9API-Schnittstelle wesentlich nutzbarer als die native JAXP-Schnittstelle.
Der XSLT-Teil definiert nur die Transformationsdefinition, nichts anderes. Schauen Sie sich das an:
In Francois-Kies Beantworten Sie die Datei input.xml Die Datei ist die Datei, die sich umgewandelt, die XSLT-Definition ist die XSLT-Definition, die beschreibt, wie die XML-Datei umgewandelt wird.Output.out sind die Ergebnisse, dies kann XML sein, kann aber auch HTML, Flat-Datei ... sein.
Hier hat ich angefangen, als ich XSLT verwendet habe:
http://www.w3schools.com/xsl/default.asp
Schauen Sie sich das auch an:
http://www.w3schools.com/xsl/tryxslt.asp? XMLFILE= CDCATALOG & AMP; XSLTFile= CDCATALOG