XML-Datenverarbeitung klappt nicht am JBoss



  • Thread wurde in reinster Verzweiflung geschrieben. Glaube kaum, dass hier jemand eine Antwort drauf kennt, aber man kanns ja versuchen.

    Also. Ein lokaler Security Client schickt eine XML-Datei mit Signaturinhalt an den Server, dieser parst die Datei und gibt aber folgenden Fehler aus:

    22:32:01,750 ERROR [STDERR] Error
    22:32:01,750 ERROR [STDERR]  processing XML data:
    22:32:01,750 ERROR [STDERR]   System ID: null
    22:32:01,750 ERROR [STDERR]   Line no: 65
    22:32:01,750 ERROR [STDERR]   Column no: 19
    22:32:01,750 ERROR [STDERR]   Message: cvc-complex-type.2.1: Element 'dsig:Signature' must have no character or element information item [children], because the type's content type is empty.
    

    Das dsig:Signature-Element passt aber wenn ich es händisch gegen das Schema prüfen lasse.

    Ihr kennt natürlich kaum Daten und da meine Diplomarbeit wesentlich zuviel Aufwand ist hier zu erklären nur kurz eine Frage.

    Gibts bekannte Probleme mit dem Parsen von XML unter JBoss 4.0.5? Umlaute? Verständnisprobleme? Kaputte Libs?

    MfG SideWinder



  • Vielleicht noch als Zusatz. Die Library die am JBoss die Probleme hat das XML zu parsen ist die IAIK-Library.

    Aber die benutzt intern die JBoss-XML-Libs.

    MfG SideWinder



  • Hallo SideWinder

    Kannst den Messagestream irgendwie aufzeichenen? Über einen Proxy.

    Den Teil ab Parentknoten von dsig:Signature mal hier reinposten.
    Ein Element über über Line no: 65 Column no: 19

    Welches Transportprotokoll nutzt Du?
    Unicode eingestellt?!

    Die Schemen von Client und Server sind auch identisch. Kein Versionenkonflikt?!
    Wie hast Du die Übertragungsverschlüsselung/ -entschlüsselung konfiguriert?

    Wieso überhaupt Library?! Die hat mit dem Parsen erst einmal nichts zu tunen.



  • Juchu, zumindest jemand der sich für mein Problem interessiert, da gibts gerne mehr Informationen und einen Keks 😉

    Also der Inhalt von dsig:Signature:

    <dsig:Signature>
    		<dsig:SignedInfo>
    			<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    			<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    			<dsig:Reference URI="">
    				<dsig:Transforms>
    					<dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
    						<dsig:XPath>not(ancestor-or-self::pr:Identification)</dsig:XPath>
    					</dsig:Transform>
    					<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    				</dsig:Transforms>
    				<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    				<dsig:DigestValue>DIGEST_VALUE</dsig:DigestValue>
    			</dsig:Reference>
    			<dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest">
    				<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    				<dsig:DigestValue>DIGEST_VALUE</dsig:DigestValue>
    			</dsig:Reference>
    		</dsig:SignedInfo>
    		<dsig:SignatureValue>SIGNATURE_VALUE</dsig:SignatureValue>
    		<dsig:KeyInfo>
    			<dsig:X509Data>
    				<dsig:X509Certificate>
    CERTIFICATE_CONTENT
    				</dsig:X509Certificate>
    			</dsig:X509Data>
    		</dsig:KeyInfo>
    		<dsig:Object>
    			<dsig:Manifest Id="manifest">
    				<dsig:Reference URI="">
    					<dsig:Transforms>
    						<dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
    							<dsig:XPath>not(ancestor-or-self::dsig:Signature)</dsig:XPath>
    						</dsig:Transform>
    					</dsig:Transforms>
    					<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    					<dsig:DigestValue>DIGEST_VALUE</dsig:DigestValue>
    				</dsig:Reference>
    			</dsig:Manifest>
    		</dsig:Object>
    	</dsig:Signature>
    

    Die großbuchstbaigen Sachen habe ich entfernt, enthalten Newlines, aber ansonsten keine gröberen Sonderzeichen.

    Das ganze wandert dann über HTTPS zurück an den Server, der prüft die Signatur mittels interner Libraries, das würde dann wieder zurück zum Client wandern der seinen Login noch "unterschreiben" (digital signieren) muss und dann wird der User am Server eingeloggt.

    Aber wenns zum ersten Mal mit der Signatur zur Prüfung geht spuckt er den Fehler aus. Ich habe leider keine Ahnung wo genau der Fehler auftritt, da sich meine Informationen auf die Log4j-Ausgaben der bestehenden Server-Applikation minimieren. Offenbar haben sich die Herrn Programmierer am Server nicht viel um Logging gekümmert.

    Für mich sieht es aber aus, als würde es bereits beim Parsen der XML-Signatur passieren - und das wird mit Hilfe von XML-Bibliotheken gemacht, die der JBoss bereits mitbringt.

    MfG SideWinder



  • Interessant ist, dass das Konzept an sich schon funktioniert (zB unter Tomcat alleine). Neu ist jetzt der JBoss - der wird aber benötigt, und ich kann jetzt uA die Applikation jetzt so hinbiegen, dass sie dort auch läuft...

    MfG SideWinder


Anmelden zum Antworten