I Servizi dell'architettura Web Services. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com



Documenti analoghi
I Servizi dell'architettura Web Services. Tito Flagella Lorenzo Nardi

I Servizi dell'architettura Web Services. Tito Flagella Lorenzo Nardi

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Piattaforma STS. Specifiche Tecniche. Versione 1.1

Creare client statici

Gestione Richieste Patenti Web

Approfondimento di Marco Mulas

Sicurezza dei dati. Xml Encryption e Digital Signature. Sicurezza dei dati. XML Encryption. Svantaggio di SSL. SSL (Secure Socket Layer)

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

JBoss ESB Un caso d'uso italiano: La Porta di Dominio per la Cooperazione Applicativa

POSTA ELETTRONICA (TRADIZIONALE e CERTIFICATA) FIRMA DIGITALE PROTOCOLLO INFORMATICO. Maurizio Gaffuri 11 ottobre 2007

Programmazione in Rete

Protezione delle informazioni in SMart esolutions

Sicurezza dei sistemi e delle reti 1. Lezione VI: IPsec. IPsec. La suite TCP/IP. Mattia Monga. a.a. 2014/15

Seminario di Sistemi Distribuiti RPC su SOAP

La sicurezza nelle reti di calcolatori

Introduzione alla Posta Elettronica Certificata (PEC): le regole tecniche

La sicurezza nel Web

PRACTICAL DEVELOPMENT OF A WEB SERVICE

Sicurezza nelle applicazioni multimediali: lezione 7, sicurezza dei protocolli. Sicurezza dei protocolli (https, pop3s, imaps, esmtp )

Dettaglio attività e pianificazione. snamretegas.it. San Donato Milanese Aprile 2014

Web Service SOAP e WSDL. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

Release Notes di OpenSPCoop2. Release Notes di OpenSPCoop2

Reti di Telecomunicazione Lezione 8

Laboratorio di Sistemi Distribuiti

Web Service medra per la gestione DOI

ASPETTI DI SICUREZZA NELLA

Comunicazioni sicure tra server di posta elettronica

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Il Web-Service SDMX dell ISTAT

VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE

VPN: connessioni sicure di LAN geograficamente distanti. IZ3MEZ Francesco Canova

Allegato 3 Sistema per l interscambio dei dati (SID)

Manuale gestione Porta di Dominio OpenSPCoop 1.1

Client e Server comunicano tramite il protocollo SOAP.

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Guida Utente della PddConsole. Guida Utente della PddConsole

Servizi remoti Xerox Un passo nella giusta direzione

Introduzione alle applicazioni di rete

Lezione 1 Introduzione

Aruba Sign 2 Guida rapida

Plus srl :: :: :: Via Morgagni, 4/A Verona :: Tel :: Fax

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

1 Oggetto del documento Definizioni, Acronimi ed Abbreviazioni Riferimenti Architettura generale Anagrafe operatori...

Logo Cliente o Partner Un modello di sicurezza per servizi bancari!

Procedure di utilizzo e di descrizione applicativa

Manuale Utente PEC e Client di Posta tradizionale

Scheda di collaudo Integrazione NoTIER

TAS Network FOCUS ON. Pronti per SWIFTNet 7.0!

Specifiche Tecnico-Funzionali

Manuale SDK di OpenSPCoop2 i. Manuale SDK di OpenSPCoop2

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Sicurezza a livello IP: IPsec e le reti private virtuali

Il Web-Service SDMX dell ISTAT

Guida Utente della PddConsole. Guida Utente della PddConsole

Reti di Telecomunicazione Lezione 7

Introduzione ai Web Services Alberto Polzonetti

Le caselle di Posta Certificata attivate da Aruba Pec Spa hanno le seguenti caratteristiche:

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Documentazione API web v 1.0

DOCFINDERWEB SERVICE E CLIENT

Esercitazione 2 Certificati

URI. Introduzione. Pag. 1

Java Web Services. Uso di Eclipse e Apache Axis

Sessioni Applicative in Http. Tito Flagella

Esercitazione 02. Sommario. Un po di background (1) Un certificato digitale in breve. Andrea Nuzzolese

Portale regionale della Salute. Servizi di prenotazione prestazione e pagamento ticket.

Creare connessioni cifrate con stunnel

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Problematiche correlate alla sicurezza informatica nel commercio elettronico

Secure Socket Layer (SSL) Transport Layer Security (TLS)

MONITORAGGIO UNITARIO PROGETTI 2007/2013 PROTOCOLLO DI COLLOQUI ANALISI ATTIVAZIONE SERVIZIO IGRUE IN SPCOOP. Link.it srl - Analisi Servizio IGRUE 1

Architettura MVC-2: i JavaBeans

S.I.I.P.A.L. Sistema Informativo Integrato Pubblica Amministrazione Locale

PEC. La posta elettronica certificata

SERVICE BROWSER. Versione 1.0

Guida Utente della PddConsole. Guida Utente della PddConsole

Lextel Servizi Telematici per l Avvocatura

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Gestione delle Reti di Telecomunicazioni

Gestione degli indirizzi

Servizi medra Report e HTTPCallback

Applicazioni per l autenticazione Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica.

Introduzione alla consultazione dei log tramite IceWarp Log Analyzer

DESCRIZIONE DELLE SPECIFICHE DI

appunti delle lezioni Architetture client/server: applicazioni client

OPESSAN DESCRIZIONE SERVIZI VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE

TeamPortal. Servizi integrati con ambienti Gestionali

Lo scenario: la definizione di Internet

PRODUZIONE PAGELLE IN FORMATO PDF

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Gestione XML della Porta di Dominio OpenSPCoop

PROCEDURA AGGIORNAMENTO LISTE MEDIANTE L INTERFACCIA WEB

Manuale Gestione di OpenSPCoop 1.4 i. Manuale Gestione di OpenSPCoop 1.4

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

StarShell. IPSec. StarShell

SVI Nuovo Sistema Revisioni

ALICE AMMINISTRAZIONE UTENTI WEB

Web Services. Scoperta del servizio UDDI. Descrizione del servizio WSDL. Accesso al servizio SOAP XML. Starto di comunicazione HTTP

Transcript:

I Servizi dell'architettura Web Services Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

La struttura del messaggio SOAP Un messaggio SOAP consiste di: Envelope, identifica il contenuto del messaggio e include: Header, opzionali, contengono informazioni relative al messaggio (meta-dati) Body, contiene i documenti XML di richiesta o di risposta 2

Struttura di un messaggio SOAP <?xml version= 1.0?> <soap:envelope xmlns:soap= http://schemas.xml.soap.org/soap/ envelope/ > <soap:header> (opzionale) </soap:header> <soap:body> (payload, obbligatorio) </soap:body> </soap:envelope> 3

SOAP: Header e Body Supponiamo di inviare i dati di un'ordine. I dati relativi alla business logic dell'applicazione (dettagli degli articoli, indirizzo di spedizione,...) saranno inseriti nel body. I meta-dati, necessari per l'attivazione di funzionalita' aggiuntive (Quality of Service, come sicurezza o affidabilità) saranno inseriti modularmente nell'header. 4

Gli Header SOAP L'header è un generico contenitore di informazione di controllo Può contenere un numero arbitrario di elementi da qualunque namespace L'elemento header è opzionale 5

Gli Header SOAP (2) Un elemento dell'header ha due attributi speciali: mustunderstand, che puo assumere i valori: 1, indica che il ricevente deve sapere gestire l Header, altrimenti deve restituire un messaggio di Fault 0, o attributo non presente, indica che il ricevente può ignorare l Header e continuare nella gestione del messaggio. l actor che specifica l URI dell endpoint che deve gestirlo. 6

Progettare un servizio Infrastrutturale Cosa significa definire un nuovo servizio architetturale: Introdurre un nuovo header-name; Definire la sintassi xml dell'header (la specifica SOAP lascia piena liberta' di estensione) Specifica xsd Assegnare una semantica non ambigua ai possibili contenuti dell'header sintatticamente ammissibili Tipicamente quanto sopra corrisponde alla specifica di un servizio architetturale WS-Addressing WS-Security Alcuni servizi utilizzano anche pacchetti applicativi per lo scambio di informazioni tra le componenti Necessari per mettere a disposizione al programmatore funzionalita' a livello infrastrutturale 7

WS-Addressing SOAP non è completamente neutrale rispetto al trasporto Ad esempio il destinatario non è incluso nel pacchetto ma è l'indirizzo del canale di trasporto Questi problemi rendono difficile gestire profili asincroni in cui la risposta non arriva sulla stessa connessione http della richiesta. WS-Addressing risolve queste problematiche tramite l'introduzione di appositi header: wsa:to, wsa:action, wsa.messageid, wsa:from, wsa:replyto, wsa:faultto 8

WS-Addressing (2) To: (obbligatorio)indica l'endpoint a cui e' destinato il messaggio Action: (obbligatorio) indica l'operazione o l'azione che deve esser presa per questo messaggio. ReplyTo: (opzionale) specifica la locazione a cui inviare la risposta. Se non specificato o settato ad anonymous usa il canale previsto dal livello trasporto FaultTo: (opzionale) Simile al replyto, ma per i messaggi di errore. MessageId: (opzionale nei Oneway) indica un identificatore univoco del messaggio RelatesTo: (obbligatorio nelle risposte) nei messaggi di risposta indica il MessageId della richiesta. http://www.srdc.metu.edu.tr/webpage/seminars/webservices/ws-addressing.ppt 9

WS-ReliableMessaging Alcuni livelli di trasporto non forniscono garanzie sull'effettiva consegna dei messaggi ai destinatari Sorry, HTTP non è un protocollo affidabile... WS-ReliableMessaging definisce un layer applicativo che fornisce garanzie di affidabilità anche per livelli di trasporto non affidabili 10

WS-Relaibale Messaging Endpoint A Endpoint B Establish Protocol Preconditions (Policy exchange, endpoint resolution, establishing trust) Create Sequence Create Sequence Response (Identifier=http://fabrikam.com) Message 1 Message 2 Message 3, LastMessage Sequence Acknowledgement (Acknowledgement Range=1,3) Message 2, AckRequested Sequence Acknowledgement (Acknowledgement Range=1..3) Terminate Sequence 11

Creazione della Sequenza <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <MessageID>urn:uuid:4eb39189-47ee-4d50-9cb3-fe8b4e8e1538</MessageID> <To>http://localhost:8080/ese8/Ordine</To> <ReplyTo><Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous </Address></ReplyTo> <FaultTo><Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous< /Address></FaultTo> <Action>http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</Action> </soap:header> <soap:body> <ns2:createsequence xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:ns2="http://schemas.xmlsoap.org/ws/2005/02/rm"> <ns2:acksto><address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymo us</address></ns2:acksto> <ns2:expires>pt0s</ns2:expires> <ns2:offer> <ns2:identifier>urn:uuid:6c80ba54-6ba6-4df1-ab0e-2897c773a319</ns2:identifier> <ns2:expires>pt0s</ns2:expires> </ns2:offer> </ns2:createsequence> </soap:body></soap:envelope> 12

Risposta alla creazione sequenza <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <MessageID>urn:uuid:6bd5e6e7-246c-430f-b5fb-40f4ef49b5b6</MessageID> <To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</To> <RelatesTo>urn:uuid:4eb39189-47ee-4d50-9cb3-fe8b4e8e1538</RelatesTo> <Action>http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse </Action> </soap:header> <soap:body> <ns2:createsequenceresponse> <ns2:identifier>urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe</ns2:identifier> <ns2:expires>p0y0m0dt0h0m0.0s</ns2:expires> <ns2:accept> <ns2:acksto> <Address>http://localhost:8080/ese8/Ordine</Address> </ns2:acksto> </ns2:accept> </ns2:createsequenceresponse> </soap:body></soap:envelope> 13

Invio Messaggio <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <MessageID >urn:uuid:2334fc6f-d89a-46ae-baba-a70d24300e88</messageid> <To>...</To> <ReplyTo>...</ReplyTo> <FaultTo>...</FaultTo> <Action>http://rivenditore.org/SubmitOrdine</Action> <wsrm:sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"> <wsrm:identifier>urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe</wsrm:identifier> <wsrm:messagenumber>1</wsrm:messagenumber> </wsrm:sequence> </soap:header> <soap:body> <ordine>...</ordine> </soap:body> </soap:envelope> 14

Messaggio di Ack <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <MessageID>...</MessageID> <To>...</To> <ReplyTo>...</ReplyTo> <Action>http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement</A ction> <wsrm:sequenceacknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"> <wsrm:identifier>urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe</wsrm:identifier> <wsrm:acknowledgementrange Lower="1" Upper="1" /> <wsrm:acknowledgementrange Lower="3" Upper="3" /> </wsrm:sequenceacknowledgement> </soap:header> <soap:body/> </soap:envelope> Domanda: come procede la conversazione? 15

Transazioni nel mondo Web Service Abbiamo analizzato le problematiche relative all'accesso concorrente in un database Immaginiamo adesso di analizzare quelle stesse problematiche in un ambiente distribuito Una delle operazioni parte di una stessa transazione può non terminare con successo decretando il fallimento delle altre. Come coordinare tutti i servizi coinvolti? Aggiungere le note problematiche delle comunicazioni remote. Tempi estesi a causa del livello di trasporto. Le risorse non possono essere impegnate a tempo indefinito 16

WS-Coordination e WS-Transaction WS-Coordination definisce un framework generico per il coordinamento di un servizio all'interno di un'attivita che puo' coinvolgere piu' servizi. WS-Transaction estende questo framework con due modalita' aggiuntive Atomic Transaction: per transazioni di breve durata. Se una attivita' fallisce, vengono abortite tutte le attivita' della transazione. Business Activity: per transazioni di lunga durata. Modifiche subito permanenti (committate) gestendo le operazioni di compensazione in caso di rollback. 17

Configurazione in CXF Nel file beans.xml di CXF <cxf:bus> <cxf:features> <cxf:logging/> <wsa:addressing/> <wsrm-mgr:reliablemessaging> <wsrm-policy:rmassertion> <wsrm-policy:baseretransmissioninterval Milliseconds="4000"/> <wsrm-policy:acknowledgementinterval Milliseconds="2000"/> </wsrm-policy:rmassertion> </wsrm-mgr:reliablemessaging> </cxf:features> </cxf:bus> 18

Gestione a carico del programmatore Come utilizzare i servizi nelle applicazioni: Dipende dall'ambiente di programmazione In Java JAX-WS offre un supporto generico per operare sugli header Handler, MessageLevelService su messaggio SOAP completo Resta il problema di operare sulla semantica dello specifico servizio JAX-WS permette di accedere all'xml ma non ha nessun supporto per la gestione delle funzionalita' specifiche del servizio Per questo si usano API non standard (es, per la sicurezza WSS4J, XWSS,...) 19

Uso degli handler in JAX-WS public class SOAPLoggingHandler implements SOAPHandler<SOAPMessageContext> {... public boolean handlemessage(soapmessagecontext smc) { logtosystemout(smc); return true; } public boolean handlefault(soapmessagecontext smc) { logtosystemout(smc); return true; } public void close(messagecontext messagecontext) { }... 20

Uso degli Handler in JAX-WS private void logtosystemout(soapmessagecontext smc) { Boolean outboundproperty = (Boolean) smc.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (outboundproperty.booleanvalue()) { out.println("\noutbound message:"); } else { out.println("\ninbound message:"); } } SOAPMessage message = smc.getmessage(); try { message.writeto(out); out.println(""); } catch (Exception e) { out.println("exception in handler: " + e); } 21

Annotazione dell'header @HandlerChain(file = "My_service_handler.xml") My_Service_Handler.xml: <handler-chains xmlns="http://java.sun.com/xml/ns/javaee"> <handler-chain> <handler> <handler-name>mysoaphandler</handler-name> <handler-class>my.implementing.class</handler-class> </handler> <handler>... </handler>... </handler-chain> </handler-chains> 22

Gestione a carico dell'infrastruttura Configurazione dell'application Server per operare sui servizi in maniera trasparente rispetto all'applicazione: Applicazione opera sul body ed ignora gli header L'infrastruttura opera sugli header, in funzione della configurazione impostata per quel servizio Le configurazioni dell'ambiente non sono standard ma dipendono dallo specifico ambiente 23

http/https https (Hypertext Transfer Protocol over Secure Socket Layer) è uno schema di URI usato per indicare una connessione HTTP sicura Il protocollo e' esattamente lo stesso protocollo HTTP, ma la richiesta e la risposta viaggiano su una connessione SSL Richiede quindi certificati x509 e supporta: cifratura del canale autenticazione server Autenticazione client Per default e' usata la porta 443, anzichè la porta 80 24

Sicurezza End2End SSL is only for point to point connections Only usable for a few protocols (mainly HTTP) Only transport of whole document is encrypted Header information no longer readable Routing information (proxy, ws Intermediaries) Calling a set of Web Services? Asynchronous call of Web Services not possible Data unprotected upon reaching the server Authentication of origin lost if more than one service is involved 25

Firma 26

Verifica della Firma 27

Firma Digitale 28

XML Signature RFC 3275: Digitally sign document and represent in XML Result is (still) an XML document XPath to locate and identify parts to be signed Multiple signatures can be added to one document Choose parts of documents to sign Calculate digest (or hash sum) of each part (after canonization) Build <SignedInfo> element (contains digest, used algorithms, XPath) Calculate digest of SignedInfo and sign it -> <SignatureValue> SignedInfo, SignatureValue, KeyInfo are added to document in <Signature> 29

XML Encryption Encrypting or decrypting whole or partial XML document or binary data References XML Signature specification <EncryptedData> element(s) in SOAP body (and header) Can encrypt leaf element or element tree http://www.w3.org/encryption/2001 30

WS-Security (1) Comunicazioni con intermediari WS-Security fornisce gli strumenti necessari a garantire la sicurezza e la flessibilita' necessarie ad effettuare comunicazioni di dati sensibili in presenza di punti intermedi Authentication Signature Ecnryption Non repudiation 31

WS-Security (2) <S:Envelope xmlns:s="..."> <S:Header> <wsse:security xmlns:wsse="..."> <wsse:usernametoken> <wsse:username>alice</wsse:username> <wsse:password>pwd</wsse:password> </wsse:usernametoken> </wsse:security> <S:Header> <S:Body>...</S:Body> <S:Envelope xmlns:s="..."> 32

WS-Security (3) 33

Security Message <S: Envelope xmlns:s= http:// xmlns:wsse= http:// xmlns:xenc= http:// <S:Header> <wsse:security> <wsse:binarysecuritytoken> ID= MyToken </wsse:binarysecuritytoken> <xenc:encryptedkey> <xenc:referencelist> <xenc:datareference URI= #enc /> </xenc:referencelist> </xenc:encryptedkey> <ds:signature> </ds:signature> </wsse:security> </S:Header> Key used to encrypt message Contains signature algorithm, key info, and signature value Key used for the signature

Configurazione WS-Security Usiamo lo strumento XWSS (XML and Web Service security), un framework java per WS-Security Predisponiamo un file di configurazione xml nel formato supportato da XWSS Predisponiamo un handler che invoca XWSS, passandogli come input la configurazione predisposta Agganciamo l'header al servizio usando l'annotazione JAX-WS 35

Configurazione XWSS per UsernameToken <xwss:securityconfiguration dumpmessages="true" xmlns:xwss=" http://java.sun.com/xml/ns/xwss/config"> <xwss:usernametoken name="ron" password="nor"/> <xwss:requireusernametoken/> </xwss:securityconfiguration> 36

Handler per Processare l'header XWSSProcessorFactory factory = XWSSProcessorFactory.newInstance(); XWSSProcessor cprocessor = factory.createprocessorforsecurityconfiguration(configfile, handler); ProcessingContext context = new ProcessingContext(); context.setsoapmessage(msg); // Gestione Lato Client // Gestisco il messaggio (decifro, controllo firma etc..) secondo la configurazione passata SOAPMessage securemsg = cprocessor.secureoutboundmessage(context); //Gestione Lato Server // Gestisco il messaggio (decifro, controllo firma etc..) secondo la configurazione passata SOAPMessage verifiedmsg= sprocessor.verifyinboundmessage(context); 37

Trasporto di uno UsernameToken <SOAP-ENV:Envelope xmlns:soap- ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <wsse:security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401- wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1"> <wsse:usernametoken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:id="xwssgid-1210628119633-78222534"> <wsse:username>ron</wsse:username> <wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0#PasswordDigest"></wsse:Password> <wsse:nonce EncodingType="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary">RPHDMIc+/Jn+E7Zf6aMziWJr</wsse:Nonce> <wsu:created>2008-05-12t21:35:19z</wsu:created> </wsse:usernametoken> </wsse:security> </SOAP-ENV:Header> <SOAP-ENV:Body>... </SOAP-ENV:Body> </SOAP-ENV:Envelope> 38

Configurazione Encryption <xwss:securityconfiguration dumpmessages="true" xmlns:xwss="http://java.sun.com/xml/ns/xwss/config"> <xwss:encrypt> <xwss:x509token certificatealias="s1as"/> </xwss:encrypt> </xwss:securityconfiguration> Possiamo aggiungere l'elemento <xwss:encryptiontarget> per indicare l'elemento da cifrare(nella forma namespace.localname). Se non viene specificato di default cripta il body. <xwss:encryptiontarget type="qname">{http://rivenditore.org/}ordine</xwss:target> 39

Busta cifrata WS-Sec (1) <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <wsse:security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1"> <wsse:binarysecuritytoken xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:id="xwssgid-1210630311275-1894529781">miic8z...y84oe</wsse:binaryse curitytoken> <xenc:encryptedkey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <xenc:encryptionmethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <ds:keyinfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <wsse:securitytokenreference> <wsse:reference URI="#XWSSGID-1210630311275-1894529781" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-tokenprofile-1.0#X509v3"/> </wsse:securitytokenreference></ds:keyinfo> <xenc:cipherdata><xenc:ciphervalue>p7hsj9mw...xkye4e=</xenc:ciphervalue> </xenc:cipherdata> <xenc:referencelist><xenc:datareference URI="#XWSSGID-1210630312066-953587955"/> </xenc:referencelist> 40

Busta Cifrata WS-Sec (2) </xenc:encryptedkey> </wsse:security> </SOAP-ENV:Header> <SOAP-ENV:Body> <xenc:encrypteddata xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="XWSSGID-1210630312066-953587955" Type="http://www.w3.org/2001/04/xmlenc#Content"> <xenc:encryptionmethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledescbc"/> <xenc:cipherdata> <xenc:ciphervalue>q33vnnqinm1najh2en...hd +YnIqQU=</xenc:CipherValue> </xenc:cipherdata> </xenc:encrypteddata> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 41

Configurazione Firma <xwss:securityconfiguration dumpmessages="true" xmlns:xwss="http://java.sun.com/xml/ns/xwss/config" > <xwss:sign> <xwss:x509token certificatealias="xws-security-client"/> <xwss:signaturetarget type="qname" value="soap-body"/> </xwss:sign> <xwss:requiresignature/> </xwss:securityconfiguration> Indica il certificato e la parte da firmare. Viene in automatico aggiunto anche il timestamp, obbligatorio quando si firma. 42

Estratto Busta Firmata <SOAP-ENV:Envelope xmlns:soap-env="..."> <SOAP-ENV:Header> <wsse:security xmlns:wsse="..." SOAP-ENV:mustUnderstand="1"> <wsse:binarysecuritytoken...>...</wsse:binarysecuritytoken> <ds:signature xmlns:ds="..."> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">... </ds:canonicalizationmethod> <ds:signaturemethod Algorithm="...#rsa-sha1"/> <ds:reference URI="#XWSSGID-12106336689631575868911">... </ds:reference> <ds:reference URI="#XWSSGID-1210633668967598841935">...</ds:Reference> </ds:signedinfo> <ds:signaturevalue>2mp...em0=</ds:signaturevalue> <ds:keyinfo>... </ds:keyinfo></ds:signature> <wsu:timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd" wsu:id="xwssgid-1210633668967598841935"> <wsu:created>2008-05-12t23:07:48z</wsu:created><wsu:expires>2008-05-12t23:07:53z</wsu:expires> </wsu:timestamp> </wsse:security> </SOAP-ENV:Header> <SOAP-ENV:Body...> <ordine>...</ordine> </SOAP-ENV:Body></SOAP-ENV:Envelope> 43

WS-Policy WS-Policy fornisce uno standard per descrivere requisiti e capacita' di un Web Service E' possibile integrarlo nel WSDL, di modo che i fruitori siano informati delle linee guida e dei QoS richiesti per usare il servizio Se cifrare il messaggio, con quale algoritmo, se implementare WS-RM o WS-A etc.. I tools possono creare stub gia' configurati per soddisfare i requisiti descritti (non tutto puo' essere automatizzato). WS-Policy definisce elementi estensibili utilizzati da altre specifiche per facilitarne la descrizione es. WS-SecurityPolicy 44

WS-Trust e WS-SecureConversation Estendono la specifica WS-Security WS-Trust consente di fornire il proprio token ad un'apposito servizio per ottenere un nuovo token utile quando ad esempio un client si identifica con un protocollo che il server non supporta o quando il server non riconosce le credenziali del client (Identity Management) WS-SecureConversation stabilisce il concetto di security context una sorta di sessione che consente di autenticarsi una sola volta alleviando l'overhead introdotto. 45

WS-SecureConversation Why introduce WS-SecureConversation? Consider the functions of WS-Security message integrity message confidentiality single message authentication 46

WS-SecureConversation What if senders and receivers need to exchange multiple messages? 47

WS-SecureConversation A Feasible Solution Encrypt all messages with a security token issued by a token issuing service. Drawback: the size of each message can become a performance bottleneck. 48

WS-SecureConversation A Better Solution WS-SecureConvsation Similar to SSL Introduce a security context A SecurityContextToken is applied. Once created, the messages are smaller and can be processed faster by both ends. 49

WS-SecureConversation Goals Define how security contexts are established Specify how derived keys are computed and passed Non-Goals Define how trust is established or determined that is done by WS-Trust 50