Una delle cose che più mi ha entusiasmato dei web services è la loro estrema praticità. Quando si creano più applicazioni che hanno delle funzionalità comuni si possono inscatolare in un web services e lo sviluppo è sicuramente più celere.
Quello che però alle volte sfugge è "una delle sue maggiori virtù, SOAP tanto per capirci, è anche il suo tallone d'achille per la sicurezza".
Perchè sicurezza e cosa ci interessa in buona sostanza:
- l'identità del client
- messaggio valido ed integro durante la trasmissione
- privacy della comunicazione
In questa faq riportata da Lorenzo a suo tempo si trovano molte informazioni sul mondo WSE ovvero quello che ci viene in soccorso in questi casi. Per ulteriori informazioni su SOAP,WSLD e Web Services vi consiglio questo suo articolo ....ed immaginate che nel 2001 già parlava di XAML.
Ma che cosa è WSE? WSE = Web Services Enhancements ossia un tool per utilizzare la WS-Security con Asp.Net, dove per WS intendiamo Web Services Security Language ovvero uno standard per aggiungere l'autenticazione, firma e la criptazione alla comunicazione SOAP dei Web Services.
Ma WS è un set di definizioni e complessi algoritmi per risolvere i tre punti indicati? No, è uno standard.
Descrive una serie di schema per la descrizione di SOAP:Header che aggiungono informazioni ai messaggi SOAP, tanto per farcene un'idea date un occhio allo schema http://schemas.xmlsoap.org/ws/2002/07/secext/
Per capire meglio di cosa stiamo parlando conviene prima dare uno sguardo a XML Schema for WS-SecurityPolicy.
Ma come fa il client ad autenticarsi? Ci sono tre modalità, elenchiamone due:
- il client utilizza una trusting authority centralizzata e poi chiama il server
- il server si proccupa di ottenere il token per il client
Quello che a noi ora interessa e cosa accade nel wsse. Supponiamo di utilizzare un X.509
<wsse: Security
xmlns:wsse=http://schemas.xmlsoap.org.org/ws/2002/12/secext
<wsse:BinarySecurityToken
ValueType="wsee:X509v3"
EncodingType="wsse:Base64Binary">
Idjfai......
</wsse:BinarySecurityToken>
</wsse: Security>
Se utilizzassimo i ticket Kerberos dovremmo sostituire con ValueType="wsee:Kerberosv5ST"
Per maggiori informazioni sull'interoperabilità di WS tutte le news le trovate su ws-i .
Ma WSE nel nostro Visual Studio dove si trova? Non è già "compreso" occorre scaricarlo all'indirizzo http://msdn2.microsoft.com/it-it/webservices/aa740641(en-us).aspx in questo post facciamo riferimento alla vesione 2.0.
Le classi più importanti:
- WebServicesClientProtocol
- SoapContext
- Security
- UsernameToken
- X509SecurityToken
Mentre i namespace sono:
- Microsoft.WebServices2
- Microsoft.Web.Services2.Security.Token
Ma prima d'attentrari, magari nel prossimo post su cosa sono e come si usano, vediamo per concludere come si aggiunge la potenza di WSE ad un nostro progetto:
- installiamo WSE scegliendo l'opzione add-in
- apriamo/creiamo un progetto VS
- tasto destro sul progetto e scegliamo WSE Setting 2.0
- selezioniamo Permetti WSW per questo progetto
E cosa posso dire adesso....io studio ancora per un pò prima d'andare a dormire magari riesco a vedere anche qualcosa in televisone, ed a voi "Buona settimana".