Xpath-Transformation funktioniert in Java nicht

Dies ist mein XML-Dokument. Ich möchte nur den UserID-Teil mit XML-Signatur signieren. Ich verwende die xpath-Transformation, um dieses bestimmte Element auszuwählen.

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Version="2.0" IssueInstant="2012-05-22T13:40:52:390" ProtocolBinding="urn:oasis:na
mes:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="localhos
t:8080/consumer.jsp">
<UserID>
   xyz
</UserID>
<testing>
   text
</testing>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
   http://localhost:8080/saml/SProvider.jsp
</saml:Issuer>
</samlp:AuthnRequest>


Ich benutze den folgenden Code, um die Transformationen hinzuzufügen:

transformList.add(exc14nTransform);
 transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec("samlp:AuthnRequest/UserID xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\"")));


Aber ich bekomme folgendes:

Original Exception was javax.xml.transform.TransformerException: Extra illegal t
okens: 'xmlns', ':', 'samlp', '=', '"urn:oasis:names:tc:SAML:2.0:protocol"'


Also habe ich versucht, den xmlns-Teil zu entfernen.

transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec("samlp:AuthnRequest/UserID")));


Es wird jedoch das gesamte Dokument signiert und die folgende Meldung ausgegeben:

com.sun.org.apache.xml.internal.security.utils.CachedXPa
thFuncHereAPI fixupFunctionTable
INFO: Registering Here function


Worin besteht das Problem?
BEARBEITEN
Wie @ Jörn Horstmann sagte, ist die Nachricht nur ein Protokoll oder so etwas. Jetzt besteht das Problem darin, dass auch nach der Angabe der xpath-Abfrage das gesamte Dokument anstelle der UserID signiert wird. Ich habe dies durch Ändern des Wertes von bestätigt<testing>Element nach dem Signieren des Dokuments. Das Ergebnis ist, dass das Dokument nicht validiert wird (Wenn es nur den UserID-Teil signiert hat, werden alle Änderungen an vorgenommen<testing> sollte zu einer gültigen Unterschrift führen.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage