XML- und Web-Service-Sicherheit (WS 2010/11) ¨Ubungsserie 5

Werbung
XML- und Web-Service-Sicherheit (WS 2010/11)
Übungsserie 5– Musterlösung
15. Dezember 2010
1
XML Signature
<ns1:A
xmlns:ns1="http://eins.ns"
xmlns:ns3="http://drei.ns"
xmlns:ns2="http://zwei.ns">
<ns2:B
ID = "12323"/>
<ns2:C ref= " 12456" ID="12345"
/>
<ns2:D xmlns:ns4="http://vier.ns"
xmlns:ns5="http://fuenf.ns">
<ns4:E ref=’12323’ />
<ns6:F ref="12345" ID="12456" xmlns:ns6="http://sechs.ns" />
</ns2:D>
<ns2:C ID="78762"/>
<ns1:G>
<H>Dies ist ein <Text!></H>
</ns1:G>
</ns1:A>
2
Canonicalization-1
<ns2:D xmlns:ns1="http://eins.ns" xmlns:ns2="http://zwei.ns" xmlns:ns3="http://drei.ns"
xmlns:ns4="http://vier.ns" xmlns:ns5="http://fuenf.ns">
<ns4:E ref="12323"></ns4:E>
<ns6:F xmlns:ns6="http://sechs.ns" ID="12456" ref="12345"></ns6:F>
</ns2:D>
Man kann sehen, dass bei der Inclusive Canonicalization alle vorher definierten Namespaces (ns1-ns5) ins Element reingehen. Sie werden da nach den
Namespace-Prefixes sortiert.
1
3
Canonicalization-2
Bei der Exclusive Canonicalization werden im Element nur die Namespaces deklariert, die von dem Element visible utilized sind (sie werden von dem Element
oder von seinen Attributen benutzt).
<ns2:D xmlns:ns2="http://zwei.ns">
<ns4:E xmlns:ns4="http://vier.ns" ref="12323"></ns4:E>
<ns6:F xmlns:ns6="http://sechs.ns" ID="12456" ref="12345"></ns6:F>
</ns2:D>
4
XML Canonicalization in Java
Ich hab nach einigen Tools gesucht, mit denen man XML Canonicalization testen
könnte. Leider hab ich nichts sinnvolles gefunden, am leichtesten war ein kleines
Java Programm zu schreiben. Zur Ausführung dieses Codes müssen externe
Bibliotheken von Apache Santuario (http://santuario.apache.org/mirrors.cgi)
heruntergeladen werden und ins Projekt hinzugefügt werden.
Leider hat es bei mir nicht geklappt, nur Teile des Dokuments zu kanonisieren. Ich hoffe aber, dass dieser Code mindestens ein bisschen hilft.
XML Canonicalization ist auch in den Folien von unserem Praktikum beschrieben: http://www.nds.ruhr-uni-bochum.de/teaching/lectures/504/ (Folien
XML Signature, Slides 7-10).
2
import
import
import
import
java.io.File;
java.io.FileInputStream;
org.apache.xml.security.Init;
org.apache.xml.security.c14n.Canonicalizer;
public class Test {
public static void main(String[] args) throws Exception {
// initialization von Santuario Library
Init.init();
// Canonicalization Instantiation
Canonicalizer c = Canonicalizer.
getInstance(Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
Canonicalizer c = Canonicalizer.
getInstance(Canonicalizer.ALGO_ID_C14N11_OMIT_COMMENTS);
//
//
// Reading the file
File file = new File("test2.xml");
int size = (int)file.length();
byte[] xml = new byte[size];
FileInputStream fis = new FileInputStream(file);
fis.read(xml);
// Canonicalization and data output
byte[] canonicalized = c.canonicalize(xml);
System.out.println(new String(canonicalized));
}
}
3
Herunterladen