Securing Web Services Pierre Greborio PEWay Software Architect MVP http://blogs.ugidotnet.org/pierregreborio Web services • Definizione: “A web service is a collection of protocols and standards used for exchanging data between applications.” • In pratica: è un modo di far comunicare due o più nodi (endpoints) in modo standard e quindi indipendente dalla tecnologia Sicurezza • Pensare alla sicurezza da subito ! • Il livello di sicurezza deve essere commisurato al valore che deve essere difeso, es: • Per la Ferrari ci vuole l’antifurto satellitare • Per la Duna lasciate pure le chiavi dentro • Ci sono liberie che si occupano di questo (es. WSE) WS-Security • Un insieme di standard che estendono SOAP e possono essere usati per rendere sicuri i web services • http://www.oasis-open.org • Fra i membri Microsoft, IBM, Sun, BEA, RSA, Tibco, Oracle, U.S. Navy Web Services Enhancement • E’ una libreria che implementa molte specifiche WSS • • • • • • • • WS-Security WS-Policy WS-SecureConversation WS-Trust WS-SecurityPolicy WS-Addressing WS-Attachments ... http://www.microsoft.com/downloads/details.aspx?FamilyId=1BA1F631-C3E7-420A-BC1E-EF18BAB66122&displaylang=en Sicurezza per punti • Authentication (ti dico chi sono ?) • Authorization (dimmi che posso fare ?) • Integrity (certifico che nessuno ha cambiato le informazioni che ci scambiamo) • Confidentiality (non voglio che occhi indiscreti vedano quello che ci diciamo) • Auditing e logging (verifico quello che fai) Authentication • Transport protocol dependent • L’identità del chiamante viaggia a livello di protocollo (es. HTTP) • Trasport protocol independent • Creo una custom SOAP Header contenente le credenziali del chiamante • WSE Authentication Integrity • Certifica che il messaggio SOAP non è stato modificato • In pratica, si applica la firma digitale al messaggio • Andrebbe sempre usata con l’autenticazione Integrity Authorization • E’ l’abilitazione o meno di un utente ad accedere alle risorse • WSE fornisce due tecniche • Programmatica If(token.Principal.IsInRole(“Manager”)) { //... } • Definendo la policy Authorization Confidentiality • Non si vuole che il messaggio (o parte di esso) sia leggibile (in chiaro) • In pratica: si crittografa il messaggio Confidentiality Auditing e logging • Non si può sapere se un servizio o una policy è stata violata se non si monitora le attività • Ci sono fondamentalmente tre modi: • Ad ogni web method faccio il tracing • Creo una Soap Extension • Creo un input filter Auditing e logging Punti di riferimento • http://msdn.microsoft.com/webservices /building/wse/default.aspx • http://www.wsefaq.com/ • http://www.opennetcf.org