I Servizi dell'architettura Web Services
Tito Flagella –
[email protected] Lorenzo Nardi –
[email protected]
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
2
Struttura di un messaggio SOAP
… (opzionale) … (payload, obbligatorio) Lab. App. Internet - I Servizi dell'Architettura Web Services
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.
Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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. Lab. App. Internet - I Servizi dell'Architettura Web Services
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 Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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 Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
11
Creazione della Sequenza
urn:uuid:4eb39189-47ee-4d50-9cb3-fe8b4e8e1538 http://localhost:8080/ese8/Ordine http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous< /Address> http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymo us PT0S urn:uuid:6c80ba54-6ba6-4df1-ab0e-2897c773a319 PT0S Lab. App. Internet - I Servizi dell'Architettura Web Services
12
Risposta alla creazione sequenza
urn:uuid:6bd5e6e7-246c-430f-b5fb-40f4ef49b5b6 http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous urn:uuid:4eb39189-47ee-4d50-9cb3-fe8b4e8e1538 http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe P0Y0M0DT0H0M0.0S http://localhost:8080/ese8/Ordine Lab. App. Internet - I Servizi dell'Architettura Web Services
13
Invio Messaggio
urn:uuid:2334fc6f-d89a-46ae-baba-a70d24300e88 ... ... ... http://rivenditore.org/SubmitOrdine urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe 1 ...
Lab. App. Internet - I Servizi dell'Architettura Web Services
14
Messaggio di Ack
... ... ...
http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement urn:uuid:b22e24bc-6e74-46cf-9c42-bf7faf1bbdbe
• Domanda: come procede la conversazione? Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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. Lab. App. Internet - I Servizi dell'Architettura Web Services
17
Configurazione in CXF • Nel file beans.xml di CXF
Lab. App. Internet - I Servizi dell'Architettura Web Services
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, ...)
Lab. App. Internet - I Servizi dell'Architettura Web Services
19
Uso degli handler in JAX-WS public class SOAPLoggingHandler implements SOAPHandler
{ ... public boolean handleMessage(SOAPMessageContext smc) { logToSystemOut(smc); return true; } public boolean handleFault(SOAPMessageContext smc) { logToSystemOut(smc); return true; } public void close(MessageContext messageContext) { } ... Lab. App. Internet - I Servizi dell'Architettura Web Services
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); } } Lab. App. Internet - I Servizi dell'Architettura Web Services
21
Annotazione dell'Header @HandlerChain(file = "My_service_handler.xml") My_Service_Handler.xml: MySOAPHandler my.implementing.class ... .....
Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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 Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
25
Firma
Lab. App. Internet - I Servizi dell'Architettura Web Services
26
Verifica della Firma
Lab. App. Internet - I Servizi dell'Architettura Web Services
27
Firma Digitale
Lab. App. Internet - I Servizi dell'Architettura Web Services
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 element (contains digest, used algorithms, XPath) – Calculate digest of SignedInfo and sign it -> – SignedInfo, SignatureValue, KeyInfo are added to document in
Lab. App. Internet - I Servizi dell'Architettura Web Services
29
XML Encryption • Encrypting or decrypting whole or partial XML document or binary data • References XML Signature specification • element(s) in SOAP body (and • header) • Can encrypt leaf element or element tree – http://www.w3.org/Encryption/2001
Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
31
WS-Security (2) Alice pwd ...
Lab. App. Internet - I Servizi dell'Architettura Web Services
32
WS-Security (3)
Lab. App. Internet - I Servizi dell'Architettura Web Services
33
Security Message ID=“MyToken” Key used for the signature … … Key used to encrypt message Contains signature algorithm, key info, … and signature value Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
35
Configurazione XWSS per UsernameToken
Lab. App. Internet - I Servizi dell'Architettura Web Services
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);
Lab. App. Internet - I Servizi dell'Architettura Web Services
37
Trasporto di uno UsernameToken Ron RPHDMIc+/Jn+E7Zf6aMziWJr 2008-05-12T21:35:19Z ...... Lab. App. Internet - I Servizi dell'Architettura Web Services
38
Configurazione Encryption • Possiamo aggiungere l'elemento per indicare l'elemento da cifrare(nella forma namespace.localname). Se non viene specificato di default cripta il body. {http://rivenditore.org/}ordine
Lab. App. Internet - I Servizi dell'Architettura Web Services
39
Busta cifrata WS-Sec (1) MIIC8z.............y84OE P7hsj9Mw.............xkYe4E= Lab. App. Internet - I Servizi dell'Architettura Web Services
40
Busta Cifrata WS-Sec (2) q33vnNqiNM1nAJH2En...........HD +YnIqQU= Lab. App. Internet - I Servizi dell'Architettura Web Services
41
Configurazione Firma
• Indica il certificato e la parte da firmare. Viene in automatico aggiunto anche il timestamp, obbligatorio quando si firma. Lab. App. Internet - I Servizi dell'Architettura Web Services
42
Estratto Busta Firmata ... .... ... ... 2mp....em0= .... 2008-05-12T23:07:48Z2008-05-12T23:07:53Z ... Lab. App. Internet - I Servizi dell'Architettura Web Services
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
Lab. App. Internet - I Servizi dell'Architettura Web Services
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. Lab. App. Internet - I Servizi dell'Architettura Web Services
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