Referenz URI bei Signaturprüfung

  • Hallo,


    nach erfolgloser Recherche hoffe ich, dass mir hier jemand weiterhelfen kann.


    Eine detached Signatur soll mit der BKU geprüft werden. Das signierte Dokument ist zum Prüfen per URL temporär erreichbar.
    (Wie) kann man die URI des Dokuments im VerifyXMLSignatureRequest angeben, ohne diese temporäre URL des Dokuments als Referenz URI in der Signatur mit zu signieren?


    Besten Dank,
    lg
    tl

  • Das Beispiel unter Punkt 2.2.2.2. im Tutorium zur Security-Layer Spezifikation (http://www.buergerkarte.at/kon…enbefehle.signaturpruefen) sollte Ihrem Szenario entsprechen.


    Die Einbindung erfolgt über das Attribut "Reference" im Element sl:SignatureEnvironment.
    Hier der Code, Erläuterungen siehe Tutorium.

    XML
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <sl:VerifyXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
    3. <sl:DateTime>2004-12-13T17:00:00</sl:DateTime>
    4. <sl:SignatureInfo>
    5. <sl:SignatureEnvironment Reference="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/tutorial/examples/interface/common/XMLDocument.signed.xml"/>
    6. <sl:SignatureLocation xmlns:doc="urn:Document">/doc:Document/dsig:Signature</sl:SignatureLocation>
    7. </sl:SignatureInfo>
    8. </sl:VerifyXMLSignatureRequest>
  • Hallo, danke für die rasche Antwort.


    Die Signatur übergebe ich als XmlContent beim VerifyXmlRequest. Eine Referenzierung ist nicht notwendig.
    Ich meinte die Referenzierung des Dokuments, welches unabhängig zur Signatur vorliegt.

    Code
    1. <dsig:Signature>....<dsig:SignedInfo>...<dsig:Reference Id="..." URI="http://...../Document.bin">


    Dies funktioniert im angepassten Testlauf einwandfrei.
    Problem:
    - URL muss beim Signaturvorgang bekannt sein und angegeben werden.
    - URL wird nochdazu fix signiert. -> Signaturen können nichtmehr geprüft werden, wenn sich die Serverdomain oder die URL ändert.


    * Ich suche nach einer Lösung, bei der entweder eine relative URL angegeben und nachträglich entsprechend aufgelöst werden kann.

    Code
    1. <dsig:Reference Id="..." URI="/Document.bin">

    (Im Tutorium finde ich dies leider in einem für mich nicht anwendbaren Zusammenhang (2.2.2.4. Ergänzungsobjekte))


    * Oder eine Möglichkeit um diese URL erst beim VerifyXmlSignatureRequest anzugeben.


    Danke für die Hilfe,
    lg
    tl

  • Mit "<sl:supplement>" sind Sie schon am richtigen Weg.


    Z.B. Signatur mit relativer Referenz "Simple.txt" erzeugt (die Daten werden als <sl:Base64Content> übergeben:



    Im VerifyXmlSignatureRequest dann ein Supplement für die Referenz "Simple.txt" (Referenz muss exakt gleich wie in der Signatur lauten) mit der URL als <sl:LocRefContent> angeben:


    Code
    1. ...
    2. <sl:Supplement>
    3. <sl:Content Reference="Simple.txt">
    4. <sl:LocRefContent>http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/tutorial/examples/interface/common/SimpleText.txt</sl:LocRefContent>
    5. </sl:Content>
    6. </sl:Supplement>
    7. </sl:VerifyXMLSignatureRequest>