Nello script #594 abbiamo visto come firmare un documento XML (o più oggetti XML) secondo le specifiche del W3C. In questo script vedremo come verificare che la firma sia corretta. Useremo sempre la classe SignedXml che è in grado, dato il documento firmato, di ricostruire le informazioni sull?algoritmo utilizzato, la chiave pubblica da utilizzare e il digest calcolato. Anche qui è importante indicare che le chiavi sono da memorizzare sulla macchina poiché ASP,NET non dispone di un profile dove memorizzarle:
// Carico il documento xml XmlDocument doc = new XmlDocument(); doc.Load(xmlFile.PostedFile.InputStream); bool v = false; // Creo l'oggetto per firmare SignedXml xs = new SignedXml(); // Indico che gli algoritmi RSA devono memorizzare // le chiavi sulla macchina RSACryptoServiceProvider.UseMachineKeyStore = true; // Carico il documento in modo che carichi da solo // la KeyInfo e le Reference e le modalità di firma xs.LoadXml(doc.DocumentElement); // Verifico la firma v = xs.CheckSignature(); // Mando in output l'xml risultante Response.Write((v)?"Documento valido":"Documento non valido");
Questo meccanismo di firma e controllo verrà utilizzato nelle future specifiche di WS-Security volte a rendere sicuri i WebService che come sapete, si basano su dialoghi in XML.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.