<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Security &amp; Architecture : WS-*</title><link>http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx</link><description>Tags: WS-*</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>WS-Discovery enhanced</title><link>http://blogs.msdn.com/mariofontana/archive/2009/10/13/ws-discovery-enhanced.aspx</link><pubDate>Tue, 13 Oct 2009 07:23:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906488</guid><dc:creator>mfontana</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9906488.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9906488</wfw:commentRss><description>&lt;p&gt;Continua la saga su WS-Discovery scritta sempre da Alessio Mannelli. Per chi si fosse perso la prima puntata può leggerla &lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/07/23/understanding-ws-discovery.aspx" target="_blank"&gt;qui&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Recap&lt;/h4&gt;  &lt;p&gt;Ben ritrovati in questa serie di post dedicati alla specifica WS-Discovery. Nella puntata precedente abbiamo fatto conoscenza del modello, dei messaggi e delle interazioni basiche fondamento della specifica.&lt;/p&gt;  &lt;p&gt;Abilitare scenari di composizione dinamica, sia a design-time, ma soprattutto a runtime, sono il fulcro alla base della specifica.&lt;/p&gt;  &lt;p&gt;In questa nuova puntata andremo a conoscere il supporto di rete previsto in WS-Discovey, il &lt;strong&gt;Discovery Proxy&lt;/strong&gt;, come gestire il concetto degli Scopes, ed introdurremmo gli scenari applicativi che implementeremo nella prossima puntata della serie WS-Discovery.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Supporto di rete&lt;/h4&gt;  &lt;p&gt;Abbiamo già visto nella prima puntata le due modalità operative presenti in WS-Discovery, &lt;i&gt;ad-hoc&lt;/i&gt; e &lt;i&gt;managed&lt;/i&gt;. La prima si basa completamente sullo scambio di messaggi in Multicast per tutte le peculiarità di Discovery (&lt;b&gt;Hello/Bye/Probe/Match&lt;/b&gt; e relative *&lt;b&gt;Resolve&lt;/b&gt;), la seconda si basa sulla presenza di un servizio di rete, denominato Discovery Proxy, al quale inviare i messaggi di ricerca (&lt;b&gt;Probe&lt;/b&gt; e &lt;b&gt;Resolve&lt;/b&gt;).&lt;/p&gt;  &lt;p&gt;La specifica identifica le seguenti definizioni per l’invio di messaggi in multicast:&lt;/p&gt;  &lt;p&gt;· DISCOVERY_PORT: port &lt;b&gt;3702&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· IPv4 multicast address: &lt;b&gt;239.255.255.250&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· IPv6 multicast address: &lt;b&gt;FF02::C&lt;/b&gt; (link-local scope) &lt;/p&gt;  &lt;p&gt;I messaggi multicast devono essere inviati utilizzando &lt;a href="http://specs.xmlsoap.org/ws/2004/09/soap-over-udp/soap-over-udp.pdf" target="_blank"&gt;SOAP over UDP&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Quando la modalità operativa utilizzata è quella ad-hoc, tutti i messaggi di richiesta devono essere inviati come sopra definito, mentre tutte le risposte verranno inviate in unicast al client che ha inviato i messaggi. Per comunicare in unicast verso il client vi sono due possibilità:&lt;/p&gt;  &lt;p&gt;· Il client aggiunge un indirizzo di risposta sfruttando l’header di Addressing &lt;em&gt;ReplyTo&lt;/em&gt; .&lt;/p&gt;  &lt;p&gt;· Il server utilizza l’indirizzo IP e la porta sorgente della connessione UDP ricevuta per rispondere al client.&lt;/p&gt;  &lt;p&gt;Nella modalità operativa &lt;i&gt;managed &lt;/i&gt;il client dialoga con il Discovery Proxy in unicast, sia in richiesta che in risposta.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Client e Discovery Proxy&lt;/h4&gt;  &lt;p&gt;Il Discovery Proxy, come già descritto, è alla base della modalità operativa cosiddetta &lt;i&gt;managed.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Un client, se non diversamente istruito, si trova normalmente in un stato nel quale non conosce Discovery Proxy; è possibile, chiaramente che riceva un Hello dal Discovery Proxy, riconoscibile da uno specifico &lt;em&gt;Service Type &lt;/em&gt;che lo contraddistingue (&lt;i&gt;d:DiscoveryProxy&lt;/i&gt;) nel qual caso modificherà radicalmente il modo con il quale invia richieste di &lt;em&gt;Probe &lt;/em&gt;e &lt;em&gt;Resolve&lt;/em&gt;, secondo il diagramma a stati sotto descritto:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoveryenhanced_116E6/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoveryenhanced_116E6/image_thumb.png" width="417" height="465" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Quindi, una volta che il client si trova a conoscere un Discovery Proxy comunicherà con lo stesso in modalità unicast, evitando quindi di congestionare la rete con messaggi in multicast.&lt;/p&gt;  &lt;p&gt;Un DiscoveryProxy, di contro, quando riceve un messaggio di &lt;em&gt;Probe &lt;/em&gt;o &lt;em&gt;Resolve &lt;/em&gt;in multicast è tenuto a spedire subito un messaggio di &lt;b&gt;Hello&lt;/b&gt; (in multicast a sua volta): questo particolare messaggio modifica lo stato dei client in modo tale che utilizzino solamente i Discovery Proxy di cui si fidano, ed ingnorino di contro i messaggi in multicast dei Target Service.&lt;/p&gt;  &lt;p&gt;A questo punto sia i Client che i Target Service indirizzeranno le loro comunicazioni (di ricerca, per il client, di connessione/disconnessione dalla rete, per i servizi) al Discovery Proxy. Eventualmente i messaggi di connessione/disconnessione (&lt;b&gt;Hello/Bye&lt;/b&gt;) potranno essere inviati ancora in multicast, da parte dei Target Service: il loro peso specifico è talmente basso, cosi come il numero di messaggi inviati, da essere praticamente trascurabili in uno scenario reale.&lt;/p&gt;  &lt;p&gt;Tra i vantaggi di avere un’infrastruttura di Discovery &lt;i&gt;managed &lt;/i&gt;vi è anche la possibilità di scavalcare il limite di utilizzo delle comunicazioni multicast (overhead di gestione del routing del protocollo fra tutti): inserire alcuni Discovery Proxy tra le varie sottoreti, e sfruttare il modello di discovery, può portare ad allargare gli orizzonti del proprio ambiente operativo.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoveryenhanced_116E6/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoveryenhanced_116E6/image_thumb_1.png" width="408" height="245" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In questo modo i client possono trovare ed utilizzare servizi non presenti nelle loro sottoreti, senza rendere difficoltosa la gestione dell’infrastruttura.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Scopes&lt;/h4&gt;  &lt;p&gt;Come già accennato, gli &lt;em&gt;scopes, &lt;/em&gt;di seguito indicati anche come “ambiti”, possono caratterizzare un servizio nel mondo di WS-Discovery. La specifica identifica solamente i metodi specifici con i quali un Target Service deve confrontare i suoi ambiti, con quelli richiesti dal messaggio di Probe ricevuto, per rispondere, eventualmente, con un messaggio di Match (&lt;b&gt;Probe&lt;/b&gt; o &lt;b&gt;Request&lt;/b&gt;). Ripetiamo la lista dei modelli di confronto utilizzabili, per riferimento:&lt;/p&gt;  &lt;p&gt;· http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/uuid"&gt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/uuid&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/ldap"&gt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/ldap&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/strcmp0"&gt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/strcmp0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/none"&gt;http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/none&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Per maggiori informazioni sugli stessi il capitolo 5 della specifica entra nei dettagli di ogni modello.&lt;/p&gt;  &lt;h4&gt;Scenari applicativi di utilizzo di WS-Discovery &lt;/h4&gt;  &lt;p&gt;Fino a qui abbiamo praticamente visto tutti gli aspetti peculiari della specifica WS-Discovery, cerchiamo adesso di focalizzare l’utilizzo della stessa nel mondo reale, proponendo alcuni scenari che normalmente si propongono in un ambiente orientato ai servizi, e che elaboreremo nella prossima puntata:&lt;/p&gt;  &lt;p&gt;1. Ricerca a runtime di un servizio che implementa l’interfaccia che ci interessa.&lt;/p&gt;  &lt;p&gt;2. Ricerca a runtime di un servizio che, oltre ad implementare l’interfaccia richiesta, è configurato con uno scope specifico.&lt;/p&gt;  &lt;p&gt;Il primo scenario è il più frequente in ambito composizione : configurazione degli indirizzi fisici utilizzati dai servizi nei diversi “ambienti operativi” nei quali l’ applicazione verrà eseguita (sviluppo, pre-produzione, produzione e chi più ne ha più ne metta). Il vantaggio che deriva dall’utilizzo di WS-Discovery come asset fondamentale di tutti i servizi e le applicazioni è evidente: ad ogni modifica di “ambiente operativo” l’applicazione ricercherà il servizio specifico ed utilizzerà l’indirizzo recuperato a runtime per il colloquio.&lt;/p&gt;  &lt;p&gt;Chiaramente vi possono essere degli accorgimenti capaci di evitare il “dispendio” di messaggi che la ricerca di un’istanza di servizio può aggiungere all’economia del colloquio applicazione – servizio. Talvolta il peso è trascurabile, quando ad esempio il client ha un ciclo di vita molto elevato, tale per cui il peso aggiunto diventa infinitesimale rispetto al resto del peso di comunicazione; altre volte invece è necessario salvare l’indirizzo del servizio recuperato tramite utilizzo di WS-Discovery per poi riutilizzarlo al riavvio dell’applicazione. In questo modo vi è la possibilità che il servizio recuperato in precedenza non sia più “vivo”, nel qual caso si potrà procedere con una nuova interazione Probe – ProbeMatch.&lt;/p&gt;  &lt;p&gt;Il secondo scenario è il più “ambizioso” in determinati contesti. Ipotizziamo di avere alcune istanze di uno specifico servizio, distribuite in modo tale da coprire più segmenti della topologia di rete in esame. Per esempio potremmo avere un servizio locale su una macchina, un servizio su una LAN particolare , ed un servizio al centro. Tutti e tre i servizi implementano la stessa interfaccia e gestiscono gli stessi dati ma, data la loro differente collocazione geografica hanno uno SLA (service level agreement) diverso a seconda dei dati che vengono richiesti.&lt;/p&gt;  &lt;p&gt;Facciamo un esempio : il servizio locale alla mia macchina avrà lo stato completo dei dati che si generano dalla macchina stessa, il servizio interno alla LAN ha lo stato completo dei dati che si generano all’interno della LAN stessa, e per finire il servizio al centro ha lo stato completo dei dati che si generano fuori dal contesto applicativo specifico. Ogni “livello” diverso si sincronizza e coordina con gli altri tramite un ulteriore flusso dati (che non analizziamo) che rende possibile, con tempi diversi, l’allineamento dei dati su tutte le istanze del servizio ipotizzato.&lt;/p&gt;  &lt;p&gt;A questo punto l’applicazione deve capire se e come le tre diverse istanze di servizio possono aiutarlo nell’esecuzione delle sue funzioni. In alcuni casi un servizio fisicamente “vicino” al client può essere un aiuto, se non altro per il ridotto round trip di rete dell’invocazione. Altrimenti, se l’applicazione capisce di avere necessità di dati con specifico SLA può ricercare uno dei servizi specifici. &lt;/p&gt;  &lt;p&gt;Bene, l’utilizzo degli &lt;i&gt;scopes, &lt;/i&gt;in questo caso, è l’ausilio tecnico alla problematica. Ogni diversa istanza di servizio viene configurata in diversi ambiti (scopes, per l’appunto). In contesti gerarchici, come l’esempio illustrato, gli scopes possono essere definiti con una convenzione come la seguente:&lt;/p&gt;  &lt;p&gt;· Servizio al centro rende disponibile lo scope &lt;b&gt;&lt;i&gt;http://ROOT&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Servizio di “filiale” rende disponibile lo scope &lt;b&gt;&lt;i&gt;http://ROOT/BRANCH&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· Servizio locale rende disponibile lo scope &lt;b&gt;&lt;i&gt;http://ROOT/BRANCH/MACHINE&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In questo scenario si possono poi utilizzare diverse tipologie di confronto tra gli scopes: la tipologia di esatta comparazione delle stringhe, ad esempio, restituirà solo uno delle tre istanze di servizio, piuttosto che la versione RFC3986, la quale restituisce una istanza se almeno uno dei sotto livelli della risorsa richiesta è confrontabile con quello richiesto; in questo caso se chiedo lo scope ROOT, tutti e tre i servizi dell’esempio risponderanno con i loro dettagli. &lt;/p&gt;  &lt;p&gt;Tutto dipende da quali sono le necessità applicative, ma le prospettive offerte dall’infrastruttura sono molto interessanti, e flessibili.&lt;/p&gt;  &lt;h4&gt;Conclusioni &lt;/h4&gt;  &lt;p&gt;Con questo secondo post abbiamo esaurito l’overview della specifica, e definito alcuni scenari che reputo interessanti e che saranno la base del terzo ed ultimo post della serie WS-DISCOVERY. Analizzeremo l’implementazione di WS-Discovery inserito nella nuova versione del &lt;strong&gt;.Net Framework 4.0&lt;/strong&gt;, attualmente in versione Beta, e realizzeremo gli scenari proposti. Per avvantaggiarvi vi consiglio di leggere e sottoscrivere &lt;a href="http://blogs.msdn.com/discovery/"&gt;http://blogs.msdn.com/discovery/&lt;/a&gt;, ne avremo bisogno!&lt;/p&gt;  &lt;p&gt;A presto, &lt;/p&gt;  &lt;p&gt;Alessio&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906488" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Specifiche+di+Base/default.aspx">Specifiche di Base</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/.NET+4/default.aspx">.NET 4</category></item><item><title>Understanding WS-Discovery</title><link>http://blogs.msdn.com/mariofontana/archive/2009/07/23/understanding-ws-discovery.aspx</link><pubDate>Thu, 23 Jul 2009 20:04:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9846596</guid><dc:creator>mfontana</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9846596.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9846596</wfw:commentRss><description>&lt;p&gt;Da oggi e per i prossimi mesi ogni tanto ospiterò dei post scritti da alcuni colleghi/amici di Microsoft affinchè possano raccontare un po’ della loro expertise e competenza tecnica ottenuta durante le tante attività di consulenza e di supporto sul campo. Ovviamente il tema sarà sempre inerente le architetture applicative e la sicurezza…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_thumb.png" width="68" height="70" /&gt;&lt;/a&gt;In questo post iniziamo con &lt;strong&gt;Alessio Mannelli &lt;/strong&gt;(nella foto, l’unica decente che ho trovato :-)!&amp;#160; &lt;br /&gt;Non è la prima volta che parla su questo “canale”… vi ricordate &lt;strong&gt;quell’Alessio Mannelli &lt;/strong&gt;con il quale quasi un anno fa facemmo un video &lt;a href="http://blogs.msdn.com/mariofontana/archive/2008/09/29/come-funzionano-i-security-token-services.aspx" target="_blank"&gt;dove spiegava il funzionamento dei Security Token Services&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;?? Ebbene si, è sempre lui :-) Alessio lavora nella divisione servizi in Microsoft Italia come Senior Developer ed oramai ha un pluriennale esperienza di &lt;strong&gt;&lt;u&gt;implementazioni&lt;/u&gt;&lt;/strong&gt; di soluzioni SOA nell’enterprise. &lt;/p&gt;  &lt;p&gt;Quindi, non mi dilungo ulteriormente in ciancie e passo la palla ad Alessio per la prima puntata sulla specifica &lt;em&gt;WS-Discovery&lt;/em&gt; che tra l’altro è appena &lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/07/20/net-4-0-beta-1-e-ws-discovery.aspx" target="_blank"&gt;stata rettificata come standard OASIS&lt;/a&gt; ed è presente nel &lt;strong&gt;framework .NET 4.0&lt;/strong&gt;…&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;La Missione&lt;/h4&gt;  &lt;p&gt;Tra le tante specifiche che regolano il variegato mondo dei Web Services &lt;strong&gt;WS-Discovery&lt;/strong&gt; è sicuramente una delle più ambiziose: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;definire un modello standard per la localizzazione di “servizi”, un modello per essere informati quando un nuovo “servizio” viene fatto partire e quando un “servizio” viene spento. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Un modello quindi per effettuare ricerche di “servizi” e recuperarne caratteristiche specifiche come gli endpoint con i quali è possibile dialogare con gli stessi, i protocolli utilizzabili, e molto altro ancora.&lt;/p&gt;  &lt;p&gt;Il modello di Discovery è, o sta diventando, necessario in un mondo dove la “composabilità” delle applicazioni diventa asset fondamentale dell’ecosistema applicativo di una azienda; applicazioni dinamiche per loro natura che, semplicemente, è impossibile connettere a design-time oppure a deployment-time; c’è sicuramente necessità di un modello di “connessione” dinamica a runtime, un modello che valorizzi tutti gli asset di una azienda. &lt;/p&gt;  &lt;p&gt;WS-Discovery è anche un facilitatore di scenari dove trovare ed utilizzare servizi all’interno o all’esterno dell’azienda diventa sempre più difficile; strutture verticali aziendali non allineate, poca (talvolta nessuna) Governance dei programmi e progetti in corso, molti fornitori, sono tra le problematiche più classiche che portano alla proliferazione e conseguente non riutilizzo di Web Service.&lt;/p&gt;  &lt;p&gt;Per ultimo Discovery si pone l’obiettivo di abbracciare sempre più “elementi” non tradizionali di un modello di software a servizi: stampanti, device RFID, macchine fotografiche digitali, proiettori. &lt;/p&gt;  &lt;p&gt;La possibilità di utilizzare un sistema leggero, dinamico, interoperabile per la costruzione di applicazioni composte e distribuite è fondamento della specifica WS-Discovery.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Un servizio “Discoverabile”&lt;/h4&gt;  &lt;p&gt;Per la specifica &lt;a href="http://docs.oasis-open.org/ws-dd/discovery/1.1/cs-01/wsdd-discovery-1.1-spec-cs-01.pdf" target="_blank"&gt;WS-Discovery&lt;/a&gt; ogni servizio viene identificato sulla base di quattro caratteristiche fondamentali:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- EndpointReference&lt;/b&gt; (definito in &lt;strong&gt;WS-Addressing&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Un indirizzo che identifichi univocamente il servizio specifico. L’indirizzo non deve essere per forza un indirizzo fisico, anzi la specifica consiglia l’utilizzo di indirizzi logici (eg. Un identificatore universale univoco, GUID, UUID)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- Types&lt;/b&gt; (definito in &lt;strong&gt;WS-Discovery&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Ogni servizio web implementa uno o più tipologie di &lt;em&gt;portType&lt;/em&gt;, cosi come definito dalla specifica di &lt;a href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315" target="_blank"&gt;WSDL 1.1&lt;/a&gt;: la nomenclatura utilizzata è di tipo &lt;em&gt;Namespace:ServiceTypeName&lt;/em&gt; e quasi sempre viene inferita dalle specificità dei contratti implementati nei servizi.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- Scopes&lt;/b&gt; (definito in &lt;strong&gt;WS-Discovery&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Ogni servizio può identificare uno o più ambiti o contesti nei quali esiste o per i quali è stato configurato.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- XAddrs&lt;/b&gt; (definito in &lt;strong&gt;WS-Discovery&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Tutti gli indirizzi sui quali il servizio specifico è raggiungibile ed invocabile. Abbiamo quindi un modello per definire completamente uno specifico Servizio:&lt;/p&gt;  &lt;p&gt;EndpointReference, l’identificatore univoco&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Types, le tipologie di “contratti” che il servizio implementa &lt;/li&gt;    &lt;li&gt;Scopes, i contesti applicativi del servizio &lt;/li&gt;    &lt;li&gt;XAddrs, gli indirizzi sui quali il servizio è raggiungibile ed invocabile. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;&amp;lt;a:EndpointReference&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;a:Address&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; uuid:98190dc2-0890-4ef8-ac9a-5940995e6119&amp;#160; &lt;br /&gt;&amp;#160; &amp;lt;/a:Address&amp;gt;       &lt;br /&gt;&amp;lt;/a:EndpointReference&amp;gt;       &lt;br /&gt;&amp;lt;d:Types&amp;gt;i:PrintBasic i:PrintAdvanced&amp;lt;/d:Types&amp;gt;       &lt;br /&gt;&amp;lt;d:Scopes&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &lt;/em&gt;&lt;a href="ldap:///ou=engineering,o=examplecom,c=us"&gt;&lt;em&gt;ldap:///ou=engineering,o=examplecom,c=us&lt;/em&gt;&lt;/a&gt;&lt;em&gt;      &lt;br /&gt;&amp;#160;&amp;#160; &lt;/em&gt;&lt;a href="ldap:///ou=floor1,ou=b42,ou=anytown,o=examplecom,c=us"&gt;&lt;em&gt;ldap:///ou=floor1,ou=b42,ou=anytown,o=examplecom,c=us&lt;/em&gt;&lt;/a&gt;&lt;em&gt;      &lt;br /&gt;&amp;#160;&amp;#160; &lt;/em&gt;&lt;a href="http://itdept/imaging/deployment/2004-12-04"&gt;&lt;em&gt;http://itdept/imaging/deployment/2004-12-04&lt;/em&gt;&lt;/a&gt;&lt;em&gt;      &lt;br /&gt;&amp;lt;/d:Scopes&amp;gt;       &lt;br /&gt;&amp;lt;d:XAddrs&amp;gt;http://prn-example/PRN42/b42-1668-a&amp;lt;/d:XAddrs&amp;gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;Il modello di Discovery&lt;/h4&gt;  &lt;p&gt;La specifica WS-Discovery definisce sei messaggi specifici:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- Hello/Bye&lt;/b&gt; – messaggi utilizzati da un servizio per annunciare la sua presenza (Hello) o la sua “dipartita” (Bye).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- Probe/ProbeMatch&lt;/b&gt; – &lt;em&gt;Probe&lt;/em&gt; viene utilizzato per cercare uno specifico tipo di servizio, &lt;em&gt;ProbeMatch&lt;/em&gt; viene utilizzato in risposta alla richiesta.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;- Resolve/ResolveMatch&lt;/b&gt; – &lt;em&gt;Resolve&lt;/em&gt; viene utilizzato per cercare una specifica istanza di servizio, &lt;em&gt;ResolveMatch&lt;/em&gt; viene utilizzata in risposta alla richiesta.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;Lo scenario di base prevede che i servizi annuncino la loro operatività e quando possibile il loro “scollegamento” dalla rete.(chiaramente nei casi in cui un servizio si spenga per casi eccezionali, difficilmente può inviare un messaggio di &lt;b&gt;Bye&lt;/b&gt;, e la specifica non è giustamente prescrittiva in questo senso…)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_thumb_1.png" width="439" height="258" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figura 1 : Hello e Bye Messages&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In &lt;strong&gt;figura 1&lt;/strong&gt;, viene rappresentato lo scenario di base dove l’ipotetico Client riceve i messaggi di &lt;b&gt;Hello&lt;/b&gt; dai servizi WS1 e WS2 cosi come riceve il messaggio di &lt;b&gt;Bye&lt;/b&gt; dal servizio WS3, il quale nel frattempo si è scollegato dalla rete. Il Client potrà quindi utilizzare le informazioni presenti nei messaggi di protocollo per selezionare il servizio da contattare, qual’ora, chiaramente, implementi le tipologie di servizio richieste.&lt;/p&gt;  &lt;p&gt;Quando invece un Client si connette ad una rete, ed è interessato ad uno specifico servizio, può utilizzare i messaggi di protocollo &lt;b&gt;Probe&lt;/b&gt; e/o &lt;b&gt;Resolve&lt;/b&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/WSDiscoverybasics_9F20/image_thumb_2.png" width="443" height="293" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figura 2 : Probe/Resolve e ProbeMatch/ResolveMath Messages&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In &lt;strong&gt;figura &lt;/strong&gt;2 invece il Client ricerca uno specifico servizio e solo due dei tre servizi presenti e connessi alla rete rispondo con un messaggio di &lt;em&gt;Match&lt;/em&gt;. E’ da notare che, nello scenario definito, la richiesta di &lt;em&gt;&lt;b&gt;Resolve&lt;/b&gt; &lt;/em&gt;difficilmente verrà inviata: ricordiamoci infatti che &lt;em&gt;&lt;b&gt;Resolve&lt;/b&gt; &lt;/em&gt;serve per richiedere i dati di una specifica istanza di servizio, a differenza di &lt;em&gt;&lt;b&gt;Probe&lt;/b&gt; &lt;/em&gt;che ricerca istanze generiche che implementino specifiche tipologie di servizio. In questo caso il messaggio di &lt;em&gt;&lt;b&gt;Resolve&lt;/b&gt; &lt;/em&gt;potrebbe essere utilizzato nel caso in cui, dopo aver ricevuto un &lt;b&gt;&lt;em&gt;ProbeMatch&lt;/em&gt;&lt;/b&gt; alcune informazioni specifiche (tipo gli indirizzi per il dialogo) non fossero presenti.&lt;/p&gt;  &lt;h4&gt;Le modalità operative&lt;/h4&gt;  &lt;p&gt;Le modalità operative definite dalla specifica sono la &lt;strong&gt;&lt;em&gt;“ad-hoc”&lt;/em&gt;&lt;/strong&gt; e la modalità &lt;strong&gt;“managed”&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;La modalità &lt;em&gt;“ad-hoc”&lt;/em&gt; non utilizza nessun servizio di rete né server; i messaggi di &lt;em&gt;&lt;b&gt;Hello/Bye/Probe/Resolve&lt;/b&gt; &lt;/em&gt;vengono inviati in &lt;strong&gt;multicast &lt;/strong&gt;(le relative risposte, dove necessarie, vengono inviate in modalità &lt;strong&gt;unicast &lt;/strong&gt;al client che ha effettuato la richiesta).&lt;/p&gt;  &lt;p&gt;La modalità &lt;strong&gt;&lt;em&gt;“managed” &lt;/em&gt;&lt;/strong&gt;è supportata da un servizio di rete, denominato &lt;strong&gt;Discovery Proxy&lt;/strong&gt;, che funge da accentratore dei servizi presenti nell’ambiente, e che opera per conto loro nel rispondere alle richieste. Riprenderemo il concetto di Discovery Proxy in un prossimo post, poiché merita sicuramente un approfondimento.&lt;/p&gt;  &lt;h4&gt;Conclusioni&lt;/h4&gt;  &lt;p&gt;In questo primo post abbiamo solamente scalfito la superficie della specifica WS-Discovery: vi sono tutta una serie di concetti e di peculiarità proprie della specifica che verranno riprese nella prossima puntata.&lt;/p&gt;  &lt;p&gt;Saluti,&lt;/p&gt;  &lt;p&gt;Alessio Mannelli&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9846596" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Specifiche+di+Base/default.aspx">Specifiche di Base</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/.NET+4/default.aspx">.NET 4</category></item><item><title>.NET 4.0 BETA 1 e WS-Discovery</title><link>http://blogs.msdn.com/mariofontana/archive/2009/07/20/net-4-0-beta-1-e-ws-discovery.aspx</link><pubDate>Mon, 20 Jul 2009 17:14:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9841637</guid><dc:creator>mfontana</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9841637.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9841637</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01" target="_blank"&gt;WS-Discovery&lt;/a&gt; è diventato standard OASIS come specificato &lt;a href="http://blogs.msdn.com/discovery/archive/2009/07/01/ws-discovery-is-now-an-oasis-approved-standard.aspx" target="_blank"&gt;nel blog di team&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ma la cosa, forse, più interessante è che la BETA 1 del framework .NET 4 comprenderà già i bit della specifica OASIS!!&lt;/p&gt;  &lt;p&gt;Per maggiori informazioni su WS-Discovery e l’importanza che anche questa specifica ricopre nel mondo dei Web Services vi rimando a “tra poco” con un post dell’ amico&lt;strong&gt; Alessio Mannelli&lt;/strong&gt; sempre su questo canale !!! &lt;/p&gt;  &lt;p&gt;Stay tuned :-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9841637" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/.net+framework/default.aspx">.net framework</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/.NET+4/default.aspx">.NET 4</category></item><item><title>L' Application Security è indietro 10 anni rispetto al Software Development ?</title><link>http://blogs.msdn.com/mariofontana/archive/2009/06/16/la-sicurezza-applicativa-indietro-di-almeno-10-anni-rispetto-al-software-development.aspx</link><pubDate>Tue, 16 Jun 2009 08:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9751007</guid><dc:creator>mfontana</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9751007.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9751007</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;“In evolutionary terms, the information security field is more than a decade behind software development” &lt;/EM&gt;con queste parole inizia &lt;A href="http://arctecgroup.net/pdf/sosindications.pdf" target=_blank mce_href="http://arctecgroup.net/pdf/sosindications.pdf"&gt;un interessante articolo di Gunnar Peterson&lt;/A&gt; dal titolo &lt;EM&gt;“Service-Oriented Security Indications for Use”&lt;/EM&gt;. In sistesi Gunner sostiene che a partire dagli anni 90 abbiamo assistito a molteplici evoluzioni nel campo del software development mentre in ambito security siamo rimasti pressochè fermi, immobili. &lt;/P&gt;
&lt;P&gt;Io mi trovo pressochè d’accordo con lui anche se man mano proseguivo nella lettura dell’articolo le ragioni del mio essere d’accordo divergevano sempre più da quelle presentate da Gunner. Mi spiego meglio.&lt;/P&gt;
&lt;P&gt;In sintesi Gunner sostine cha se dal lato applicativo c’è stata una forte evoluzione partendo dagli anni 90 con lo sviluppo delle prime Web Applications con CGI, passando poi per l’era ASP/JSP, le 3-tiers Apps nel 1998 per arrivare agli anni 2000 dove si inizia a progettare con SOAP, XML e REST per arrivare agli albori del Web 2.0, &lt;STRONG&gt;dal lato security non siamo mai andati oltre i firewalls e SSL&lt;/STRONG&gt;. Su questo sono d’accordo anche se a mio avviso è necessario fare un ulteriore distinguo tra le definizione di standard per la sicurezza e relativa adozione di quest’ultimi da parte dell’industria per capire meglio il fenomeno. Infatti non è vero che lato security non c’è stata innovazione! &lt;/P&gt;
&lt;P&gt;Tra il 2001 e il 2002 sono comparsi i primi draft delle specifiche che volevano andare oltre la sicurezza del protocollo SSL e di infrastruttura (comunque lato sicurezza applicativa i firewall erano già bypassati con l’introduzione di SOAP/XML, fino alla comparsa delle prime versioni capaci di fare content control su formati XML based). Nacque il così detto stack &lt;STRONG&gt;WS-* &lt;/STRONG&gt;ovvero l’insieme di tutte quelle specifiche dedicate prevalentemente al mondo dei &lt;STRONG&gt;Web Services &lt;/STRONG&gt;(non solo in ambito Security) e che oggi si riconoscono perchè iniziano tutte con &lt;STRONG&gt;&lt;EM&gt;WS-&lt;/EM&gt;&lt;/STRONG&gt; !!&lt;/P&gt;
&lt;P&gt;Quindi già dai primi anni del nuovo millennio abbiamo assistito alla comparsa di specifiche che volevano in qualche modo superare i limiti imposti da SSL e indirizzare il problema della sicurezza nel messaggio non solo tra due end-point ma fino al raggiungimento del destinatario finale. Questo scenario diventò sempre più importante in scenari &lt;STRONG&gt;SOA &lt;/STRONG&gt;dove la sicurezza è o dovrebbe essere gestita più da un punto di vista delle operations che tecnologico e dove i servizi possono essere distribuiti in security context diversi e/o geograficamente.&amp;nbsp; Una breve analisi del concetto di infrastruttura applicativa a servizi e relativi modelli di autenticazione li potete trovare in questi post : &lt;A href="http://blogs.msdn.com/mariofontana/archive/2008/04/22/cosa-intendiamo-per-infrastruttura-applicativa.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2008/04/22/cosa-intendiamo-per-infrastruttura-applicativa.aspx"&gt;cosa intendiamo per infrastruttura applicativa&lt;/A&gt;,&amp;nbsp; &lt;A href="http://blogs.msdn.com/mariofontana/archive/2008/03/29/autenticazione-nelle-comunicazioni-sicurezza-a-livello-di-canale.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2008/03/29/autenticazione-nelle-comunicazioni-sicurezza-a-livello-di-canale.aspx"&gt;autenticazione a livello di canale&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/mariofontana/archive/2008/03/30/autenticazione-nelle-comunicazioni-sicurezza-a-livello-applicativo.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2008/03/30/autenticazione-nelle-comunicazioni-sicurezza-a-livello-applicativo.aspx"&gt;autenticazione a livello applicativo&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/mariofontana/archive/2008/04/04/autenticazione-nelle-comunicazioni-sicurezza-a-livello-di-messaggio.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2008/04/04/autenticazione-nelle-comunicazioni-sicurezza-a-livello-di-messaggio.aspx"&gt;autenticazione a livello di messaggio&lt;/A&gt;. Già a partire da Dicembre 2002 con &lt;STRONG&gt;WSE 1.0&lt;/STRONG&gt; (per chi lavorava in ambito .NET) erano a disposizione di architetti e developers i primi bit per disegnare e soprattutto implementare scenari basati su queste nuove specifiche (&lt;STRONG&gt;WS-Security, WS-Routing &lt;/STRONG&gt;(ora chiamata WS-Addressing) e poco più. &lt;/P&gt;
&lt;P&gt;Questo lato innovazione. Lato adozione lo scenario è effettivamente diverso; tali innovazioni non furono prese molto in considerazione per vari motivi (novità, poca esperienza, pigrizia (tanto c’era SSL) e a mio avviso perchè negli anni le vere potenzialità che possono fornire le architetture a servizi come SOA/EDA sono sempre state sottovalutate. Personalmente lavoro con le specifiche WS-* dalla primissima BETA di WSE (Luglio/Agosto 2002) e ho realizzato molte soluzioni in ambito Enterprise e posso riassumere la mia esperienza in questo modo: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;le competenze sui patterns di sicurezza in ambito SOA sono conosciuti e adottati in bassissima percentuale nella fascia dei grandi clienti e quindi non mi meraviglio che in scenari meno enterprise non ci sia traccia di sicurezza se non con firewalls e SSL. &lt;U&gt;Questo almeno fino ad un paio di anni fa&lt;/U&gt;.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Fortunatamente questo scenario sta cambiando… l’adozione di patterns per la federazione via &lt;STRONG&gt;WS-Federation &lt;/STRONG&gt;e &lt;STRONG&gt;SAML 2.0 Protocol oltre i modelli basati sulla Claims-Based Security &lt;/STRONG&gt;ne sono una conferma. Anche in questo caso però sto notando una adozione prima da parte delle aziende ed enti pubblici e poi man mano in scenari sempre meno Enterprise. Personalmente conto molto sulla “democratizzazione” di questi aspetti di security con il &lt;STRONG&gt;Cloud Computing &lt;/STRONG&gt;perchè diventa (fortunatamente) sempre più difficile realizzare soluzioni silos e totalmente custom dove al contrario gli aspetti di interoperabilità, sicurezza e distribuzione geografica sono un must fin dalle prime fasi della progettazione!!&lt;/P&gt;
&lt;P&gt;Altro ambito in cui negli ultimi anni sto iniziando a vedere un discreto aumento di sensibilità in tutti i settori del mercato IT è quello legato alle best practices sullo &lt;STRONG&gt;sviluppo di codice sicuro&lt;/STRONG&gt;. Da qui l’adozione di modelli derivanti dal &lt;STRONG&gt;SDL&lt;/STRONG&gt; – &lt;EM&gt;Security Development LifeCycle &lt;/EM&gt;– (ad esempio &lt;A href="http://blogs.msdn.com/mariofontana/archive/2009/05/25/integrare-il-processo-di-security-development-lifecycle-sdl-con-visual-studio-team-system.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2009/05/25/integrare-il-processo-di-security-development-lifecycle-sdl-con-visual-studio-team-system.aspx"&gt;qui&lt;/A&gt; trovate i tool per integrare i principi del SDL con i vari aspetti dell’ ingegneria del software via Visual Studio Team System) e degli sforzi di &lt;STRONG&gt;OWASP &lt;/STRONG&gt;– Open Web Application Security Project - per rendere esplicite le best practices in questo ambito.&lt;/P&gt;
&lt;P&gt;Quindi tornando all’articolo in oggetto non credo che il mondo della sicurezza sia stato alla finestra a guardare il resto dell’ IT che si evolveva restando inerte. Credo invece che l’intriseca fatica nel capire le evoluzioni in ambito sicurezza legate alla complessità dei nuovi scenari architetturali abbia di fatto rallentato se non fermato per anni l’adozione in ambito IT. Da qui il mio essere d’accordo con l’articolo ma per ragioni diverse. &lt;/P&gt;
&lt;P&gt;Mi piacerebbe molto sapere cosa ne pensate :-)&lt;/P&gt;
&lt;P&gt;--Mario&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9751007" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category></item><item><title>Microsoft, Apache… un ossimoro??</title><link>http://blogs.msdn.com/mariofontana/archive/2009/06/07/microsoft-apache-un-ossimoro.aspx</link><pubDate>Sun, 07 Jun 2009 11:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9702640</guid><dc:creator>mfontana</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9702640.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9702640</wfw:commentRss><description>&lt;p&gt;Innanzitutto prima di generare uno sciopone a qualcuno vi prego di notare la punteggiatura nel titolo di questo post !!! Microsoft &lt;strong&gt;VIRGOLA &lt;/strong&gt;Apache e non &lt;strong&gt;Microsoft Apache &lt;/strong&gt;:-) Nessuna paura quindi , non abbiamo acquistato Apache !!!! Però c’è da dire che questa notizia, come architetto, mi ha reso proprio contento. Alzi la mano (tanto vi vedo) chi di voi si è trovato almeno una volta nella situazione di far parlare del codice .NET con quello JAVA e/o PHP o viceversa? E tenga su la mano chi ha incontrato qualche “piccolissima” difficoltà nella configurazione e settaggi vari nei rispettivi ambienti !!!! Nessuno ?? ok allora questo post non fa per voi :-)&lt;/p&gt;  &lt;p&gt;Diciamo che c’è stato un evento epocale…&lt;strong&gt; Microsoft partecipa alla keynote della conferenza JavaOne!! &lt;/strong&gt;Infatti durante la conferenza JavaOne &lt;strong&gt;Steven Martin&lt;/strong&gt; - Senior Director, Developer Platform Product Management – e &lt;strong&gt;Aisling MacRunnels &lt;/strong&gt;- Sun Vice President- hanno annunciato durante la keynote che &lt;strong&gt;Sun &lt;/strong&gt;parteciperà attivamente al progetto open-source &lt;strong&gt;Stonehenge &lt;/strong&gt;inizialmente creato da &lt;strong&gt;Microsoft&lt;/strong&gt;, &lt;strong&gt;WS02&lt;/strong&gt;, &lt;strong&gt;University of Moratuwa&lt;/strong&gt;, &lt;strong&gt;Progress Software&lt;/strong&gt;, &lt;strong&gt;Red Hat &lt;/strong&gt;e &lt;strong&gt;Eviware&lt;/strong&gt;. In particolare Sun si occuperà della realizzazione Java/Metro della soluzione &lt;a href="http://www.interoperabilitybridges.com/Project.aspx/Stonehenge_-_StockTrader_community_project" target="_blank"&gt;StockTrader&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Microsoft (anche se molti non lo sanno) ha partecipato e sta partecipando a &lt;a href="http://port25.technet.com/archive/2008/11/07/open-source-interoperability-projects-at-microsoft.aspx" target="_blank"&gt;molti progetti open source&lt;/a&gt; ma questa è la prima volta che Microsoft partecipa come &lt;strong&gt;code contributor &lt;/strong&gt;in un progetto Apache!!&lt;/p&gt;  &lt;p&gt;Lo scopo di questo progetto è nobile : realizzare &lt;strong&gt;&lt;u&gt;in concreto &lt;/u&gt;&lt;/strong&gt;degli scenari di interoperabilità e di best practices tra applicazioni e web services sviluppati su stack tecnologici diveri. &lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/05/20/microsoft-e-saml-2-0-protocol.aspx" target="_blank"&gt;Come dissi in questo mio post&lt;/a&gt;&amp;#160; &lt;em&gt;“non basta avere delle specifiche standardizzate per realizzare veramente degli scenari di interoperabilità” (sintetizzato)&lt;/em&gt; !!! I motivi sono molteplici : non tutti i vendor implementano le medesime specifiche anche se standardizzate, non sempre è chiaro come configurare i vari ambienti e prodotti, spesso ci sono delle piccole differenze in termini di serializzazione, encoding che se non gestite possono rendere difficile la realizzazione del progetto… &lt;/p&gt;  &lt;p&gt;Per questo motivo il progetto Stonehenge &lt;strong&gt;&lt;u&gt;realizza &lt;/u&gt;&lt;/strong&gt;delle applicazioni di esempio basate su stack &lt;strong&gt;Java&lt;/strong&gt;, &lt;strong&gt;.NET, &lt;/strong&gt;&amp;#160;&lt;strong&gt;PHP ma anche Python e Ruby&amp;#160; &lt;/strong&gt;in grado di interoperare utilizzando un set comune di specifiche standard definte dal &lt;strong&gt;W3C &lt;/strong&gt;e &lt;strong&gt;OASIS&lt;/strong&gt;. Stiamo parlando in prevalenza di comunicazioni basate sugli standard WS-*. I vari sorgenti li potete trovare &lt;a href="https://svn.apache.org/repos/asf/incubator/stonehenge/contrib/stocktrader/" target="_blank"&gt;nel repository di stocktrader&lt;/a&gt; : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/e9279e09cf76_8B2A/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/e9279e09cf76_8B2A/image_thumb.png" width="361" height="287" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9702640" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Specifiche+di+Base/default.aspx">Specifiche di Base</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Interoperabilit_E000_/default.aspx">Interoperabilità</category></item><item><title>Microsoft e SAML 2.0 Protocol</title><link>http://blogs.msdn.com/mariofontana/archive/2009/05/20/microsoft-e-saml-2-0-protocol.aspx</link><pubDate>Wed, 20 May 2009 13:15:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9631997</guid><dc:creator>mfontana</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9631997.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9631997</wfw:commentRss><description>&lt;p&gt;Forse non è ancora noto a tutti che Microsoft sta lavorando per integrare parte del protocollo &lt;strong&gt;SAML 2.0 &lt;/strong&gt;all’interno dei servizi di Active Directory. &lt;/p&gt;  &lt;p&gt;Come presentato durante l’ultimo PDC (Professional Developers Conference) da &lt;a href="http://www.identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt; la nuova versione di &lt;strong&gt;ADFS &lt;/strong&gt;(Active Directory Federation Services) che per adesso ha il code name &lt;strong&gt;&lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/05/12/cosa-geneva-in-due-parole.aspx" target="_blank"&gt;Geneva&lt;/a&gt;, &lt;/strong&gt;oltre ad estendere il supporto alle specifiche &lt;strong&gt;WS-* (WS-Security, WS-Trust, WS-Federation, ecc.…) &lt;/strong&gt;sarà in grado di “parlare” SAML 2.0 creando una vera e propria infrastruttura sistemistica ed applicativa capace di semplificare gli aspetti di autenticazione e di Single Sign On. Geneva inoltre è definita una “open platform” perchè permette di realizzare una architettura claims-based basata sui principali protocolli standard (WS-* e SAML 2.0). I componenti della specifica SAML 2.0 implementati sono i seguenti :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Web SSO AuthnRequest : HTTP redirect &lt;/li&gt;    &lt;li&gt;Web SSO Response : HTTP POST &lt;/li&gt;    &lt;li&gt;Identity Provider Discovery : Cookie &lt;/li&gt;    &lt;li&gt;Web SSO Response : HTTP Artifact &lt;/li&gt;    &lt;li&gt;Artifact Resolution : SOAP &lt;/li&gt;    &lt;li&gt;Single Logout (IdP-initiated) : HTTP redirect &lt;/li&gt;    &lt;li&gt;Single Logout (SP-initiated) : HTTP redirect &lt;/li&gt;    &lt;li&gt;Enhanced Client/Proxy SSO : PAOS &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Infine Geneva per automatizzare al massimo l’amministrazione degli aspetti di federazione utilizzerà il nuovo &lt;a href="http://identity-des.com/2008/10/28/harmonized-federation-metadata-for-ws-federation-and-saml/"&gt;harmonized federation metadata format &lt;/a&gt;basato sui metadata SAML 2.0. (&lt;a href="http://identity-des.com/2008/10/28/microsoft-geneva-server-supports-saml-20/" target="_blank"&gt;leggete qui la notizia da Don Schmidt&lt;/a&gt;) &lt;/p&gt;  &lt;h3&gt;E questo cosa significa?&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Interoperabilità&lt;/strong&gt; e &lt;strong&gt;Single Sign On&lt;/strong&gt;! Infatti SAML 2.0 è il protocollo di riferimento per le principali architetture &lt;strong&gt;Open-Source&lt;/strong&gt; per lo scambio di informazioni di autenticazione ed autorizzazione tra security domains mentre lo stack di specifiche WS-* (e nello specifico WS-Federation) è lo standard di riferimento utilizzato nei principali prodotti commerciali sempre con l’obiettivo di scambiare informazioni di autenticazione ed autorizzazione. &lt;/p&gt;  &lt;p&gt;Queste specifiche hanno molti vantaggi per noi architetti ma anche un grosso svantaggio : mantenere i due mondi nettamente separati!! Questo significa che noi poveri architetti spesso siamo costretti a creare componenti di architetture più o meno custom per poter superare queste diversità. E’ il colmo ! Dover disegnare/scrivere delle soluzioni custom per integrare gli standard !!! (questo è il tipico caso in cui la presenza di standard non sempre aiuta!!).    &lt;br /&gt;Con Geneva questa realtà finalmente può cambiare!! Oggi siamo in grado di far interoperare questi due mondi permettendoci di disegnare &lt;strong&gt;scenari di Single Sign On &lt;/strong&gt;per i nostri utenti &lt;strong&gt;indipendentemente dallo stack applicativo e sistemistico utilizzato&lt;/strong&gt;. Finalmente possiamo iniziare a parlare di Interoperabilità con la I maiuscola anche in ambito Identity dove normalmente le varie architetture storicamente erano chiuse, blindate dalla propria tecnologia! &lt;/p&gt;  &lt;h3&gt;WS-* e SAML 2.0 Protocol. Perchè due stack di specifiche?&lt;/h3&gt;  &lt;p&gt;Ma allora la domanda nasce spontanea … perchè due stack ? &lt;/p&gt;  &lt;p&gt;Cominciamo col dire che le specifiche WS-Trust/Ws-Federation (dello stack WS-*) e il protocollo SAML 2.0 &lt;u&gt;&lt;strong&gt;hanno alcune parti in comune ma obiettivi differenti !&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;WS-Trust/Ws-Federation come tutte le specifiche di WS-* sono pensate prevalentemente per Web Services ovvero scenari “attivi” capaci di “parlare SOAP”. Infatti anche il nome lo dice : WS-* significa Web Services-*, e quindi WS-Trust = Web Services Trust, WS-Federation = Web Services Federation. Quindi lo stack WS-* fin dagli albori (siamo alla fine del 2000 circa) ha lo scopo di fornire un’infrastruttura &lt;strong&gt;per il mondo a servizi &lt;/strong&gt;(da SOA a SaaS, S+S, ecc…). WS-Federation in quello che era chiamato “profilo attivo” rappresenta la naturale evoluzione di WS-Trust e descrive i meccanismi di trust tra Security Domains differenti (Federazioni) con una predilezione e un punto di vista a servizi. &lt;/p&gt;  &lt;p&gt;Una architettura di questo tipo che pone tra i propri obiettivi anche il Single Sign-On tra applicazioni e Web Services sarebbe stata monca se non avesse aggiunto anche il supporto ai client Web che non sono in grado di gestire il protocollo SOAP (ovvero i Browser). E’ per questo motivo che WS-Federation ha anche il &lt;u&gt;profilo passivo&lt;/u&gt;, ovvero una serie di regole che permettono ai browser di utilizzare i protocolli WS-Trust e WS-Federation tramite HTTP 1.1 e quindi di integrare le anche le Web Applications nel processo di Single Sign On. In questo caso (passivo) &lt;u&gt;&lt;strong&gt;abbiamo una sovrapposizione con una parte delle funzionalità espresse da SAML 2.0 protocol &lt;/strong&gt;&lt;/u&gt;!!! &lt;/p&gt;  &lt;p&gt;Quindi per rispondere alla domanda “perchè due specifiche” posso dire che WS-Federation nasce come &lt;strong&gt;evoluzione &lt;/strong&gt;di un particolare modello ormai consolidato di sicurezza e di gestione delle identità capace di gestire &lt;strong&gt;sia i Web Services che per le Web Application &lt;/strong&gt;mentre questo doppio supporto non era previsto (almeno inizialmente) dal protocollo SAML 2.0 (nato prevalentemente per gli scenari Web Apps). Infatti, SAML 2.0 nasce dalla convergenza di &lt;a href="http://en.wikipedia.org/wiki/SAML_1.1"&gt;SAML 1.1&lt;/a&gt;, &lt;a href="http://www.projectliberty.org/resource_center/specifications/liberty_alliance_id_ff_1_2_specifications"&gt;Liberty ID-FF 1.2&lt;/a&gt;, e &lt;a href="http://shibboleth.internet2.edu/docs/internet2-mace-shibboleth-arch-protocols-200509.pdf"&gt;Shibboleth 1.3&lt;/a&gt; con il primario obiettivo di definire uno standard per il &lt;strong&gt;Web Single Sign On&lt;/strong&gt;. Successivamente SAML 2.0 ha aggiunto anche il&amp;#160; SAML ECP (Enhanced Client Profile) per l’integrazione di client attivi.&lt;/p&gt;  &lt;p&gt;WS-Federation quindi permette a tutti quelli che hanno investito sullo stack WS-* di &lt;strong&gt;continuare gli investimenti adottando un unico modello di sviluppo &lt;/strong&gt;indipendentemente dai sistemi utilizzati - Windows/Linux – e dai&amp;#160; linguaggi .NET/Java o altro. Dal canto suo, seguendo anche le innumerevoli (e a mio avviso, giustissime) richieste da parte di clienti da tutto il mondo, parte del protocollo SAML 2.0 è stato integrato in Geneva ponendo il primo tassello verso la realizzazione di un Identity MetaSystem capace di gestire ambienti multi piattaforma e multi player. Per ulteriori informazioni leggete &lt;a href="http://identity-des.com/2007/05/02/ws-fed-and-saml/" target="_blank"&gt;questo post di Don&lt;/a&gt; sullo stesso tema!!&lt;/p&gt;  &lt;p&gt;Con questo post spero di rispondere a tutti quelli che sostengono che WS-Federation è nato esclusivamente con la volontà di fare una guerra al mondo Open Source e al protocollo SAML 2.0. Personalmente , come Software Architect trovo molto frustrante quando esistono stack di infrastruttura applicativa difficilmente integrabili tra loro perchè non ci permettono di svolgere il nostro lavoro al meglio e accolgo sempre in modo positivo quando questi ostacoli vengono superati dalle infrastrutture di base siano esse Microsoft o altro.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9631997" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/IDentity+Metasystem/default.aspx">IDentity Metasystem</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/ADFS/default.aspx">ADFS</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Geneva/default.aspx">Geneva</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Interoperabilit_E000_/default.aspx">Interoperabilità</category></item><item><title>Identity Developer Training Kit</title><link>http://blogs.msdn.com/mariofontana/archive/2009/05/12/identity-developer-training-kit.aspx</link><pubDate>Tue, 12 May 2009 13:03:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9606682</guid><dc:creator>mfontana</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9606682.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9606682</wfw:commentRss><description>&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/IdentityDeveloperTrainingKit_71FF/clip_image001_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" align="left" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/IdentityDeveloperTrainingKit_71FF/clip_image001_thumb.jpg" width="69" height="122" /&gt;&lt;/a&gt;  &lt;p&gt; Ci sono grandi novità in ambito eID tra ieri ed oggi !!!&lt;/p&gt;  &lt;p&gt;Con l’uscita della &lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/05/12/e-arrivata-la-beta-2-di-geneva-quali-le-novit.aspx" target="_blank"&gt;BETA 2 di GENEVA&lt;/a&gt; oggi viene presentato anche il nuovo &lt;strong&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c3e315fa-94e2-4028-99cb-904369f177c0" target="_blank"&gt;Identity Developer Training Kit&lt;/a&gt; &lt;/strong&gt;ovvero una risorsa per DEV contenente hands- on-labs per sviluppatori creato da una task force composta da persone di DPE (la divisione per cui anch’io lavoro) e dell’ Identity Product Team con l’obiettivo di guidarvi nei meandri della programmazione di &lt;strong&gt;Geneva Framework&lt;/strong&gt;, &lt;strong&gt;Geneva Server&lt;/strong&gt;, &lt;strong&gt;Windows Live ID&lt;/strong&gt;, &lt;strong&gt;Microsoft Federation Gateway &lt;/strong&gt;e del &lt;strong&gt;.NET Access Control Service &lt;/strong&gt;con esempi di applicazioni &lt;strong&gt;ASP.NET &lt;/strong&gt;e &lt;strong&gt;WCF&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Questo Kit segue la filosofia dei training kit che (spero) abbiate già sperimentato (&lt;a href="http://blogs.msdn.com/mariofontana/archive/2009/04/15/nuovo-update-dei-net-services-sdk-e-del-azure-services-training-kit.aspx" target="_blank"&gt;Training Kit su Windows Azure&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mariofontana/archive/2008/04/21/net-3-5-enhancement-training-kit.aspx" target="_blank"&gt;Training Kit su .NET 3.5&lt;/a&gt;) dove nel tempo il kit viene arricchito di nuove PPT, source code, scenarios e video.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c3e315fa-94e2-4028-99cb-904369f177c0"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/IdentityDeveloperTrainingKit_71FF/clip_image002_3.jpg" width="494" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Buona sperimentazione,&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9606682" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/IDentity+Metasystem/default.aspx">IDentity Metasystem</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Geneva/default.aspx">Geneva</category></item><item><title>E’ arrivata la BETA 2 di Geneva. Quali le novità?</title><link>http://blogs.msdn.com/mariofontana/archive/2009/05/12/e-arrivata-la-beta-2-di-geneva-quali-le-novit.aspx</link><pubDate>Tue, 12 May 2009 12:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9606642</guid><dc:creator>mfontana</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9606642.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9606642</wfw:commentRss><description>&lt;P&gt;Durante la Keynote di Scott Charney alla RSA Conference di San Francisco è stata annunciata la disponibilità a breve della BETA 2 di Geneva. Si sapeva che l’uscita era in concomitanza con il Tech-ED NA 2009 che è cominciato ieri… ebbene ogni promessa è un debito (mai frase fu più falsa di questa in ambito rilasci di software :-) e quel “a breve” &lt;A href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx"&gt;è stato oggi (o meglio quesat notte per noi europei)&lt;/A&gt; !!! Infatti da pochissimo sono disponibili in download i bits della BETA 2 di Geneva (Geneva Server, Geneva Workstation, Geneva Cardspace). &lt;/P&gt;
&lt;P&gt;Per chi volesse avere una breve overview dei componenti di Geneva la trova in questo mio post &lt;A href="http://blogs.msdn.com/mariofontana/archive/2009/05/12/cosa-geneva-in-due-parole.aspx" target=_blank mce_href="http://blogs.msdn.com/mariofontana/archive/2009/05/12/cosa-geneva-in-due-parole.aspx"&gt;“Cosa è Geneva in due parole”&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vediamo quali sono le principali novità:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Geneva Server :&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Un nuovo motore per il claims transformation con la possibilità di attingere informazioni (attributes) da (attribute) store come SQL Server e AD LDS (il buon ADAM) e custom oltre che da AD. &lt;/LI&gt;
&lt;LI&gt;Supporto per SAML 2.0 SP-Lite &lt;/LI&gt;
&lt;LI&gt;Proxy per autenticazione di utenti internet verso i Geneva Server nella intranet. &lt;/LI&gt;
&lt;LI&gt;Supporto a PowerShell commandlets &lt;/LI&gt;
&lt;LI&gt;Supporto al Federated RMS. &lt;/LI&gt;
&lt;LI&gt;Provisioning di CardSpace “Geneva” clients via Group Policy. &lt;/LI&gt;
&lt;LI&gt;Supporto alla federazione con il Microsoft Federation Gateway. &lt;/LI&gt;
&lt;LI&gt;Maggiore scalabilità. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Geneva Framework :&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Integrazione con VIsual Studio 2008 tramite dei template dedicati per ASP.NET e WCF. &lt;/LI&gt;
&lt;LI&gt;Utility e wizard per aiutare la migrazione di applicazioni esistenti alla claims-based security. &lt;/LI&gt;
&lt;LI&gt;Supporto allo sviluppo di applicazioni claims aware e STS. &lt;/LI&gt;
&lt;LI&gt;Nuova versione di &lt;STRONG&gt;Fedutil.exe &lt;/STRONG&gt;per supporto all’offline development. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Supporto a Sharepoint 2007 !!!&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;Nuove API per l’autorizzazione. &lt;/LI&gt;
&lt;LI&gt;Evoluzione nella struttura dei token handlers e del FAM (Federation Authentication Module). &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Geneva CardSpace:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Provisioning di CardSpace “Geneva” clients via Group Policy. &lt;/LI&gt;
&lt;LI&gt;Aggiornamenti alla management UI &lt;/LI&gt;
&lt;LI&gt;Auto provisioning di Information Cards ed estensioni per la gestione da parte gli amministatori. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Su Chanell 9 all’interno della sezione dedicata all’Identity Management “&lt;A href="http://channel9.msdn.com/identity" mce_href="http://channel9.msdn.com/identity"&gt;Id Element&lt;/A&gt;” oggi sono stati pubblicati 4 video sulla BETA 2 di Geneva.&lt;/P&gt;
&lt;P&gt;· &lt;A href="http://channel9.msdn.com/shows/Identity/Chuck-Reeves-deep-diving-into-the-structure-and-design-of-Geneva-Framework-beta-2/" mce_href="http://channel9.msdn.com/shows/Identity/Chuck-Reeves-deep-diving-into-the-structure-and-design-of-Geneva-Framework-beta-2/"&gt;Chuck Reeves explores the Geneva Framework structure in depth&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;· &lt;A href="http://channel9.msdn.com/shows/Identity/Sesha-Mani-on-whats-new-with-Geneva-Framework-beta-2/" mce_href="http://channel9.msdn.com/shows/Identity/Sesha-Mani-on-whats-new-with-Geneva-Framework-beta-2/"&gt;Sesha Mani reports on what’s new with the Geneva Framework&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;· &lt;A href="http://channel9.msdn.com/shows/Identity/Jan-Alexander-on-the-claims-transformation-language-in-Geneva-Server-beta-2/" mce_href="http://channel9.msdn.com/shows/Identity/Jan-Alexander-on-the-claims-transformation-language-in-Geneva-Server-beta-2/"&gt;Jan Alexander describes the new claims transformation language&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;· &lt;A href="http://channel9.msdn.com/shows/Identity/Matt-Steele-on-whats-new-with-Geneva-Server-beta-2/" mce_href="http://channel9.msdn.com/shows/Identity/Matt-Steele-on-whats-new-with-Geneva-Server-beta-2/"&gt;Matt Steele discusses what’s new in Geneva Server&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;--Mario&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9606642" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/IDentity+Metasystem/default.aspx">IDentity Metasystem</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Geneva/default.aspx">Geneva</category></item><item><title>Cosa è Geneva... in due parole</title><link>http://blogs.msdn.com/mariofontana/archive/2009/05/12/cosa-geneva-in-due-parole.aspx</link><pubDate>Tue, 12 May 2009 12:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9606626</guid><dc:creator>mfontana</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9606626.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9606626</wfw:commentRss><description>&lt;P&gt;Nonostante siamo solo alla BETA 2 (da oggi) esistono varie fonti dove trovare documentazione su Geneva. Per questo motivo cercherò di schematizzare in poche righe le peculiarità di Geneva.&lt;/P&gt;
&lt;P&gt;Innanzitutto con Geneva si intendono 3 componenti : Geneva Server, Geneva Framework e Geneva Cardspace. Vediamone le caratteristiche:&lt;/P&gt;
&lt;H4&gt;Geneva Server&lt;/H4&gt;
&lt;P&gt;Geneva Server è un il code name della versione 2 di &lt;STRONG&gt;ADFS &lt;/STRONG&gt;(&lt;STRONG&gt;Active Directory Federation Services&lt;/STRONG&gt;) e in questa versione (da oggi disponibile la BETA 2) rappresenta uno dei componenti della piattaforma CBA (Claims based access) di Microsoft. Molte le novità e gli improvements rispetto ad ADFS. Volendo schematizzare Geneva server:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Principalmente Geneva Server è un security token service (STS) che permette di usare Active Directory come Identity Provider del mondo claims-based &lt;STRONG&gt;(Figura 1)&lt;/STRONG&gt;.&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;Identity e Federation provider &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Federation Trust Manager 
&lt;UL&gt;
&lt;LI&gt;Automatizza la configurazione e la gestione dei trust via metadata &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Basata su standard di mercato 
&lt;UL&gt;
&lt;LI&gt;Supporto all’interoperabilità &lt;/LI&gt;
&lt;LI&gt;Supporto a scenari WS-Federation passive profile (come ADFS) ovvero per applicazioni Web (via browser) &lt;/LI&gt;
&lt;LI&gt;Supporto a scenari WS-Federation active profile per integrare nei processi di eID e di Single Sign On anche le applicazioni desktop e i Web Services. &lt;/LI&gt;
&lt;LI&gt;Supporto (e questa è veramente una grossa novità) a &lt;STRONG&gt;SAML 2.0 Protocol &lt;/STRONG&gt;. 
&lt;UL&gt;
&lt;LI&gt;Web SSO AuthnRequest : HTTP redirect &lt;/LI&gt;
&lt;LI&gt;Web SSO Response : HTTP POST &lt;/LI&gt;
&lt;LI&gt;Identity Provider Discovery : Cookie &lt;/LI&gt;
&lt;LI&gt;Web SSO Response : HTTP Artifact &lt;/LI&gt;
&lt;LI&gt;Artifact Resolution : SOAP &lt;/LI&gt;
&lt;LI&gt;Single Logout (IdP-initiated) : HTTP redirect &lt;/LI&gt;
&lt;LI&gt;Single Logout (SP-initiated) : HTTP redirect &lt;/LI&gt;
&lt;LI&gt;Enhanced Client/Proxy SSO : PAOS &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Supporto a token SAML 1.1 e SAML 2.0 &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Managed Information card-provider per AD 
&lt;UL&gt;
&lt;LI&gt;CardSpace e Identity Selectors di terze parti. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb.png" width=445 height=270 mce_src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Figura 1: Architettura di Geneva Server&lt;/STRONG&gt;&lt;/P&gt;
&lt;H4&gt;Geneva Framework&lt;/H4&gt;
&lt;P&gt;Geneva framework è un’insieme di classi che estendono il framework .NET e a sua volta è l’evoluzione di un altro code name : Zermatt.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Classi per rendere le proprie applicaioni claims-based. &lt;/LI&gt;
&lt;LI&gt;Può essere utilizzato sia per le Web Applications che per i Web Services. Quindi sia per ASP.NET e WCF. &lt;/LI&gt;
&lt;LI&gt;Introdotto un nuovo modello claims based. 
&lt;UL&gt;
&lt;LI&gt;Estensione del modello “classico&lt;EM&gt;”IIdentity/IPrincipal”&lt;/EM&gt; con il nuovo “&lt;EM&gt;IClaimsIdentity/IClaimsPrincipal”.&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;Utilizzo di Thread.CurrentPrincipal al posto di ClaimsPrincipal.Current per un più facile accesso ai claims del chiamante.&amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb_2.png" width=447 height=172 mce_src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Claims e claims types sono tutte strighe. &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;ClaimsAuthenticationManager&lt;/EM&gt; per racchiudere tutta la logica di autenticazione in un unico punto. &lt;/LI&gt;
&lt;LI&gt;Uso estensivo dei token Handlers per processare qualsiasi tipo di token (U/P,X509, Kerberos, SCT e HttpCoockies. &lt;/LI&gt;
&lt;LI&gt;Il FAM (Federated Authentication Module) è composto da tre authentication models: SessionAuthenticationModule, WSFederationAuthenticationModel e ClaimsPrincipalHttpModule. In questo modo si semplifica la compatibilità con la Forms Authentication di ASP.NET e i moduli di UrlAuthorization. &lt;/LI&gt;
&lt;LI&gt;Supporto allo sviluppo di custom STS. &lt;/LI&gt;
&lt;LI&gt;GTS : Geneva token Service è un servizio disponibile con il Geneva framework che permette di trasformare token XML (come ad esempio SAML tokens) in Windows Token tramite l’ UPN name (Dietro le quinte utilizza il Kerberos Extension &lt;STRONG&gt;S4U2Prox)&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;Supporto allo sviluppo di RP (Relying party – ovvero applicazioni claims-aware) con il supporto di CardSpace. &lt;/LI&gt;
&lt;LI&gt;Supporto ASP.NET controls e integrazione con &lt;STRONG&gt;VIsual Studio 2008 &lt;/STRONG&gt;tramite dei template dedicati per ASP.NET e WCF. &lt;/LI&gt;
&lt;LI&gt;Nuove API per l’autorizzazione. &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Geneva CardSpace&lt;/H4&gt;
&lt;P&gt;CardSpace “Geneva” rilascia dei security token ai web sites/Web Services sfruttando l’infrastruttura claims-based e i meccasismi basati su WS-Security/WS-Trust e WS-Federation permettendo di mitigare al massimo il problem del phishing e aumentando la privacy degli utenti (è l’utente che piò selezionare quali e quante informazioni dare ad un sito durante la fase di autenticazione). Le informazioni all’utente sono gestite tramite delle Information cards ovver dei documenti XML firmati da un STS.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_8.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb_3.png" width=440 height=286 mce_src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/da7e076ad355_75B6/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--Mario&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9606626" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/IDentity+Metasystem/default.aspx">IDentity Metasystem</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Geneva/default.aspx">Geneva</category></item><item><title>Come integrare vecchi e nuovi applicativi C/C++ con i Web Services</title><link>http://blogs.msdn.com/mariofontana/archive/2009/03/24/come-integrare-vecchi-e-nuovi-applicativi-c-c-con-i-web-services.aspx</link><pubDate>Tue, 24 Mar 2009 12:35:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9503801</guid><dc:creator>mfontana</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9503801.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9503801</wfw:commentRss><description>&lt;p&gt;Con l’uscita della prima beta di Windows 7 (e Windows Server 2008 R2) sono disponibili delle nuove API – &lt;b&gt;Windows Web Services API (WWSAPI) &lt;/b&gt;- che permettono ai programmatori C/C++ di integrare le loro applicazioni “unmanaged” (= non .NET) con il variopinto mondo dei Web Services . Le WWSAPI permettono di creare sia la parte client che la parte server (Web Services) in puro stile C. Le applicazioni C/C++ oggi sono ancora fortemente presenti nei reparti IT e (spesso) non ci sono particolari ragioni per doverle riscrivere in codice .NET o Java!! Quindi le applicazioni C/C++ sono ancora una realtà e come tale è giusto che possano facilmente, ovvero a basso costo e senza overhead, integrarsi con tutti quei Web Services che tanto vanno di moda da qualche anno a questa parte. &lt;/p&gt;  &lt;p&gt;Come spesso racconto durante i seminari o durante gli incontri con i clienti l’adozione dei Web Services all’interno di un reparto IT (grande o piccolo che sia) può essere suddiviso in due momenti : &lt;i&gt;Enterprise Efficency&lt;/i&gt; ed &lt;i&gt;Enterprise Agility&lt;/i&gt;. Nel primo caso stiamo parlando di tutte quelle aziende (ad oggi la maggior parte in Italia) che iniziano a sperimentare l’efficacia dei Web Services e li utilizzano essenzialmente come mezzo per &lt;b&gt;facilitare l’interoperabilità&lt;/b&gt; tra software che nativamente non si parlano (spesso per ragioni tecnologiche). Facilitare l’interoperabilità signifca essere più efficienti, da cui &lt;b&gt;&lt;i&gt;Enterprise Efficiency&lt;/i&gt;&lt;/b&gt;.    &lt;br /&gt;Man mano che l’adozione dei Web Services da puro strumento di interoperabilità si trasforma in una architettura adottando quei modelli architetturali che vanno sotto il nome di SOA, EDA, SaaS,... allora entriamo nella così detta &lt;b&gt;&lt;i&gt;Enterprise Agility&lt;/i&gt;&lt;/b&gt;. Ovvero adottando questi modelli rusciamo ad essere più reattivi alle richieste da parte del business perchè il nostro modello permette o dovrebbe permettere i principi dell’application composition. Bene! Tutto questo panegirico per dire che, una volta tanto, sono qui per parlare della parte di &lt;i&gt;Efficiency&lt;/i&gt; e non (solo) della &lt;i&gt;Agility&lt;/i&gt;. Infatti tramite le WWSAPI sarà possibile mettere in comunicazione i nostri applicativi unmanaged con servizi scritti con .NET, J2EE e tutti quei linguaggi capaci di gestire SOAP 1.1 o 1.2 e HTTP. In realtà le WWSAPI fanno molto di più : permettono l’integrazione degli applicativi anche in scenari complessi basati su stack WS-* !!!&lt;/p&gt;  &lt;p&gt;Ah, quasi dimenticavo, da una indagine svolta dalla società&amp;#160; PayScale pare che i programmatori C/C++ abbiano in media uno stipendio più alto dal 2 al 20 % rispetto ai colleghi .NET e Java !!! Programmatore avvisato … :-)&lt;/p&gt;  &lt;h3&gt;Perchè un’altra libreria?&lt;/h3&gt;  &lt;p&gt;Perchè le applicazioni unmanaged, essendo una forte realtà sul mercato hanno bisogno di uno stack snello e performante capace di integrare le applicazioni C/C++ con le funzionalità esposte dai Web Services.&amp;#160; Inoltre, non so voi, ma a me nel tempo è capitato spesso di vedere molte forme custom di integrazione alcune delle quali particolarmente fantasiose :-) Oramai i Web Services sono diventati una realtà non solo per le applicazioni utenti ma sempre più spesso anche da parte del Sistema Operativo. Quindi, chi meglio del S.O. può mettere a disposizione una libreria capace di “parlare Web Service”??&lt;/p&gt;  &lt;p&gt;Altra richiesta fondamentale è la &lt;b&gt;non dipendenza&lt;/b&gt; da altri stack tecnologici. Da anni si possono già integrare componenti .NET con codice C/C++ tramite ad esempio il Managed C++, pInvoke.... Tutte soluzioni però che vedono il caricamente del CLR all’interno dello spazio di indirizzamento del processo unamanged. Questo in molti casi è semplicemente non percorribile per motivi di performance, di security... Morale della favola : le WWSAPI non hanno alcuna dipendenza da altri stack tecnologici come COM, DCOM, .NET o altro... nemmeno ATL!!!! Sono delle semplici API esposte in un’unicqa DLL, WEBSERVICES.DLL, che non ha dipendenze particolari se non quelle classiche di sistema come ad esempio : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MSVCRT.DLL (Windows NT CRT)&lt;/li&gt;    &lt;li&gt;WS2_32.DLL (Windows Socket 2.0)&lt;/li&gt;    &lt;li&gt;HTTPAPI.DLL (HTTP Protocol Stack API)&lt;/li&gt;    &lt;li&gt;WINHTTP.DLL (Windows HTTP Services)&lt;/li&gt;    &lt;li&gt;CRYPT32.DLL (Prima di Vista)&lt;/li&gt;    &lt;li&gt;BCRYPT.DLL &amp;amp; NCRYPT.DLL (Da Vista in poi)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Solo per Windows 7?&lt;/h3&gt;  &lt;p&gt;Trattandosi tipicamente di applicazioni C/C++ scritte negli anni non era pensabile che il S.O.di riferimento fosse solo ed unicamente Windows 7 e R2 di W2008. Per questo motivo le WWSAPI saranno disponibili anche per tutti i S.O. ancora coperti da supporto tecnico:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows XP con Service Pack 2 (SP2) e successivi&lt;/li&gt;    &lt;li&gt;Windows Vista&lt;/li&gt;    &lt;li&gt;Windows Server 2003 con Service Pack 2 (SP2) &lt;/li&gt;    &lt;li&gt;Windows Server 2003 R2 con Service Pack 2 (SP2) &lt;/li&gt;    &lt;li&gt;Windows Server 2008 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La domanda più ricorrente a questo punto è : &lt;em&gt;perchè non Windows 2000&lt;/em&gt;? Perchè ormai W2K è fuori dai cicli evolutivi e di supporto.&lt;/p&gt;  &lt;p&gt;Download delle varie versioni : &lt;a title="http://connect.microsoft.com/WNDP/content/content.aspx?ContentID=11205" href="http://connect.microsoft.com/WNDP/content/content.aspx?ContentID=11205"&gt;http://connect.microsoft.com/WNDP/content/content.aspx?ContentID=11205&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;WWSAPI e WCF che relazione?&lt;/h3&gt;  &lt;p&gt;nessuna :-) ormai dovrebbe essere chiaro. WWSAPI non hanno dipendenze con il framework .NET e quindi neppure con WCF. Sono due librerie paritetiche : WWSAPI utilizzate in codice unmanaged; WCF in codice managed! Condividono però una serie di similitudini come ad esempio il modello di programmazione &lt;i&gt;Function-oriented&lt;/i&gt; che permette di mascherare al programmatore i dettagli di una comunicazione message-oriented. Altra similitudine è il supporto a scenari più articolati come quelli previsti dallo stack di specifiche WS-* per i Web Services :&amp;#160; &lt;/p&gt;  &lt;p&gt;Specifiche di Base:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Trasporto&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;HTTP, TCP, UDP&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;XML Encoding&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Text, Binary, MTOM&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Metadata&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;WSDL 1.1, XML Schema 1.0&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Envelop&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;SOAP 1.1 e SOAP 1.2&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Specifiche WS-*&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Addressing&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;WS-Addressing 0.9 e 1.0&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Metadata&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;WS-MetadataExchange 1.1&lt;/li&gt;      &lt;li&gt;WS-Transfer March 2006&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Security&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;WS-Security 1.0 e 1.1 (implementazione parziale)&lt;/li&gt;      &lt;li&gt;WS-Trust February 2005 e 1.3 (implementazione parziale)&lt;/li&gt;      &lt;li&gt;WS-SecureConversation 1.1 e 1.3 (implementazione parziale)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Policy&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;WS-Policy dalla versione March 2006 alla 1.2&lt;/li&gt;      &lt;li&gt;WS-PolicyAttachment dalla versione March 2006 alla 1.2&lt;/li&gt;      &lt;li&gt;WS-SecurityPolicy 1.1&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Come si può notare a fianco delle specifiche di sicurezza c’è la scritta un po’ inquietante : &lt;i&gt;implementazione parziale&lt;/i&gt;. Questo significa che la versione 1.0 delle WWSAPI implementano solamente la sicurezza a livello di trasporto e &lt;i&gt;Mixed-mode Security &lt;/i&gt;escludendo di fatto quella parte delle specifiche relative alla sicurezza a livello di messaggio che al contrario è presente in WCF. Quindi riassumendo le caratteristiche del Channel Security avremo:&lt;/p&gt;  &lt;p&gt;Trasport Security:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HTTP : SSL e Header auth: basic/digest/SPNEGO/NTLM e SSPI &lt;/li&gt;    &lt;li&gt;TCP: Windows SSPI e SSL&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Mixed-mode Security&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Il trasporto mette in sicurezza la connessione e fornisce la funzionalità di server authentication.&lt;/li&gt;    &lt;li&gt;Gli Header WS-Security all’interno dei messaggi SOAP vengono utilizzati per il client authentication:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Token : Username/Password, Kerberos AP_REQ, SCT, Generic XML&lt;/li&gt;      &lt;li&gt;Supporto a token SAML e scenari di Federation.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h3&gt;   &lt;br /&gt;WWSAPI Architecture&lt;/h3&gt;  &lt;p&gt;Nella documentazione ancora in BETA ogni tanto si fa ancora riferimento alle WWSAPI con il codename Sapphire !&lt;/p&gt;  &lt;p&gt;Nella figura sottostante è schematizzata la struttura delle WWSAPI:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/LenuoveAPIWindowsWebServicesAPIdiWindows_101C6/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/LenuoveAPIWindowsWebServicesAPIdiWindows_101C6/image_thumb.png" width="429" height="192" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figura 1 : architettura delle WWSAPI&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Esistono una serie di oggetti trasversali ai layer come ad esempio &lt;em&gt;Errors&lt;/em&gt;, &lt;em&gt;Tracing&lt;/em&gt;, &lt;em&gt;Heap &lt;/em&gt;che permettono al programmatore di gestire facilmente alcuni aspetti della gestione delle WWSAPI. L’oggetto Error ad esempio permette di uniformare la gestione degli errori semplificando anche la complessità dei SOAP Faults mentre l’oggetto Heap permette di fare chiarezza su chi alloca e chi disalloca le risorse impiegate per la gestione delle comunicazioni. Maggiori informazioni sull’uso di questi oggetti e relative &lt;a href="http://msdn.microsoft.com/en-us/library/dd430435(VS.85).aspx" target="_blank"&gt;funzioni si trovano qui&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Come si può notare dalla figura 1 il codice applicativo può lavorare a diversi layer a seconda del livello di dettaglio che si vuole gestire direttamente. In due parole cercherò di descrivere i vari layer mentre una descrizione più esaustiva la si &lt;a href="http://msdn.microsoft.com/en-us/library/dd430451(VS.85).aspx" target="_blank"&gt;può trovare qui&lt;/a&gt; sul sito MSDN. &lt;/p&gt;  &lt;p&gt;Il &lt;strong&gt;Service Model &lt;/strong&gt;è il layer più ad alto livello che permette di gestire la comunicazione tra il client e il Web Service con il modello a chiamate a funzioni. Il punto di contatto tra il client e un Web Services anche per le WWSAPI è solo il WSDL e gli XSD che vengono trasformati in codice C (.c e .h) da una utility a riga di comando &lt;strong&gt;wsutil.exe (Maggiori dettagli nel prossimo post dove partiremo da zero nell’integrazione con dei Web Services).&lt;/strong&gt;     &lt;br /&gt;Lato client permette di chiamare delle funzioni proxy generate dal tool &lt;strong&gt;WSutil.exe &lt;/strong&gt;mentre lato server permette di concentrarsi quasi esclusivamente nell’implementazione delle funzioni di callback. &lt;/p&gt;  &lt;p&gt;Il &lt;strong&gt;Channel Layer &lt;/strong&gt;rappresenta una astrazione del canale di comunicazione e permette di interagire direttamente con le sue poprietà. A mio avviso non saranno molti gli scenari dove sarà richiesto l’accesso a questo livello di dettaglio.&lt;/p&gt;  &lt;p&gt;L’ XML Layer/Serialization rappresenta il proprio motore specializzato per i’ XML parsing delle WWSAPI con encoding Text, Binary e MTOM. Queste API esportano un XML Buffer, un XML Reader e un XML Writer che permettono di gestire, leggere e scrivere documenti XML solo in modalità “forward-only”. L’unica nota che mi preme sottolineare è il non supporto dei DTD come spesso avviene in scenari SOAP. Anche in questo caso a mio avviso saranno pochi gli scenari dove è richiesto un intervento a questo livello.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Nel prossimo post vedremo come utilizzare queste API passo-passo in diversi scenari…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9503801" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Win7/default.aspx">Win7</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/C_2F00_C_2B002B00_/default.aspx">C/C++</category></item><item><title>Dialogo alla stazione...</title><link>http://blogs.msdn.com/mariofontana/archive/2008/12/19/dialogo-alla-stazione.aspx</link><pubDate>Fri, 19 Dec 2008 22:18:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9242684</guid><dc:creator>mfontana</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/9242684.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=9242684</wfw:commentRss><description>&lt;p&gt;... sul marciapiede&amp;#160; in attesa del treno (in ritardo) per Brescia tra due nonnetti :&lt;/p&gt;  &lt;p&gt;Lei (cappottino marrone, borsetta e foular sui capelli) guardando il tabellone dell'orario del treno: &lt;strong&gt;&amp;quot;Te Arturo, cusa l'aspetta il nostro treno?? en Veb Service ??? mal passa de qui???&amp;quot; &lt;/strong&gt;(traduzione: Arturo, cosa aspetta il nostro treno?? un Web Services? Ma passa su questo binario??).&lt;/p&gt;  &lt;p&gt;Arturo (credo fosse il marito con tanto di cappotto a quadretti rossi, cappello e bastone) : &amp;quot;&lt;strong&gt;Bah, Veb...Veb???&amp;#160; sar&amp;#224; en laur de internet&lt;/strong&gt;&amp;quot; (traduzione: sar&amp;#224; riferito ad internet, al Web).&lt;/p&gt;  &lt;p&gt;Lei : &lt;strong&gt;&amp;quot;internet? cosa c'entra l'internet coi treni?&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Arturo : &lt;strong&gt;&amp;quot;a mel so mia, me voe saper quando arriva el me treno beeeeepppppp, beeeeeppppp&amp;quot;&lt;/strong&gt;...&lt;/p&gt;  &lt;p&gt;Questo &amp;#232; successo ieri sera verso le 18.20 mentre ero bloccato alla stazione di &lt;strong&gt;Milano Lambrate &lt;/strong&gt;a cause del cambio dell'orario di tutti i treni e proprio durante gli annunci di ritardi , con un tempismo perfetto, tutti i monitor degli orari e i tabelloni sui binari si sono spenti e riaccesi con la scritta &amp;quot;&lt;strong&gt;Attesa connessione Web Services&lt;/strong&gt;&amp;quot; anche quelli sui binari facendo credere che sul binario sarebbe arrivato un Web Service !!!!! :-)     &lt;br /&gt;Come loro mi chiedo quante altre persone si saranno chiesto cosa c'entravano gli orari dei treni con Internet anche se, sicuramente, molte meno rispetto a quanti si saranno chiesto che fine aveva fatto il proprio treno !!!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/Dialogoallastazione_9335/PIC_0022_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="PIC_0022" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/Dialogoallastazione_9335/PIC_0022_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Questo dovrebbe far riflettere sull'importanza della &lt;em&gt;User Experience &lt;/em&gt;&lt;strong&gt;soprattutto in presenza di errori del sistema &lt;/strong&gt;:-)&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9242684" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Information/default.aspx">Information</category></item><item><title>Come funzionano i Security Token Services.</title><link>http://blogs.msdn.com/mariofontana/archive/2008/09/29/come-funzionano-i-security-token-services.aspx</link><pubDate>Mon, 29 Sep 2008 09:10:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8968487</guid><dc:creator>mfontana</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/8968487.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=8968487</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://video.msn.com/video.aspx?vid=c6abdfaa-2606-4f09-bdb4-7aac0afdf1aa"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="256" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/4fdbf840291c_7231/image_5.png" width="394" align="left" border="0" /&gt;&lt;/a&gt; Oggi per la serie &lt;strong&gt;MSDN Talks&lt;/strong&gt; siamo in compagnia di &lt;strong&gt;Alessio Mannelli&lt;/strong&gt; - Senior Developer - della divisione Servizi di Microsoft Italia. Con Alessio negli anni passati abbiamo speso insieme parecchio tempo nella definizione e realizzazione di infrastrutture applicative (a partire da WSE 2.0) fino ad arrivare ai giorni pi&amp;#249; recenti con WCF (&lt;em&gt;WIndows Communicatino Foundation&lt;/em&gt;). &lt;a href="http://video.msn.com/video.aspx?vid=c6abdfaa-2606-4f09-bdb4-7aac0afdf1aa" target="_blank"&gt;In questo breve video&lt;/a&gt; Alessio ci parler&amp;#224; dei meccanismi di autenticazione tra servizi nei modelli definiti da WS-Security, WS-Trust e SAML 1.1. Particolare attenzione viene posta al concetto di Authority (detto anche STS - Security Token Service). Questa breve introduzione teorica sull'argoment&amp;#232; essenziale per capire scenari pi&amp;#249; complessi di Single-Sign-On in architetture SOA. Inoltre, i meccasismi spiegati da Alessio sono i medesimi che troviamo in tecnologie come ADFS (Active Directory Federation Services), CardSpace, nel nuovo &lt;em&gt;Zermatt &lt;/em&gt;(di cui parleremo a breve) e nelle future tecnologie che verranno presentati tra poco al PDC.&lt;/p&gt;  &lt;p&gt;L&amp;#8217;authority gestisce il riconoscimento dei chiamanti e la profilazione degli utenti sui servizi offrendo al sistema un punto centrale per la gestione delle politiche di sicurezza. Il chiamante prima di poter effettuare una richiesta al servizio deve autenticarsi presso l&amp;#8217;authority e farsi rilasciare un ticket di accesso al servizio richiesto. &lt;/p&gt;  &lt;p&gt;L&amp;#8217;autenticazione presso l&amp;#8217;authority avviene mediante l&amp;#8217;invio dell'identit&amp;#224; del servizio client che pu&amp;#242; essere espressa sotto varie forme: credenziali di rete, credenziali custom, certificati X509 oppure &lt;i&gt;Ticket Granting Ticket&lt;/i&gt; (TGT) preventivamente rilasciati dalla stessa authority.&lt;/p&gt;  &lt;p&gt;Alessio, ci parler&amp;#224; prevalentemente del modello di autenticazione di un servizio tramite certificati X509. L&amp;#8217;utilizzo di certificati X509 consente di realizzare un&amp;#8217;infrastruttura di sicurezza basata su algoritmi asimmetrici che utilizzano chiavi pubbliche e private per firmare e criptare le comunicazioni verso l&amp;#8217;authority.&lt;/p&gt;  &lt;p&gt;Lo scenario basato sull&amp;#8217;utilizzo di certificati X509 richiede la presenza di una Certification Authority (interna o esterna all'azienda) riconosciuta da tutte le entit&amp;#224; dell&amp;#8217;infrastruttura che rilascia certificati X509 per l&amp;#8217;identificazione dei vari attori e per l&amp;#8217;utilizzo degli algoritmi di crittografia e firma. Ad ogni componente (chiamante, servizio e authority) &amp;#232; associato uno specifico certificato. La specifica WS-Trust definisce come i servizi in gioco possano autenticarsi tra loro. Riassumento lo scenario descritto da Alessio avremo : &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/4fdbf840291c_7231/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="200" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/4fdbf840291c_7231/image_thumb_1.png" width="398" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;1) il servizio/applicazione chiamante si autentica all'authority via X509. In questo contesto la specifica WS-TRust definisce un tipo di messaggio chiamato RST (Request Security Token). &lt;/p&gt;  &lt;p&gt;2) l'authority autentica il servizio/applicazione client, verifica le policy autorizzative e crea un nuovo security token di tipo SAML che descrive l'identity del client ed eventuali informazioni aggiuntive sui ruoli e applicative.In questo contesto la specifica WS-TRust definisce un tipo di messaggio chiamato RSTR (Request Security Token &lt;strong&gt;Response&lt;/strong&gt;). &lt;/p&gt;  &lt;p&gt;3) Il chiamante passa il security token di tipo SAML al servizio target che pu&amp;#242; effettuare la verifica dell' identit&amp;#224; del client e procedere all'esecuzione del processo di business.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Buona visione&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8968487" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Specifiche+di+Base/default.aspx">Specifiche di Base</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Webcast/default.aspx">Webcast</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/IDentity+Metasystem/default.aspx">IDentity Metasystem</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/MSDN+Talks/default.aspx">MSDN Talks</category></item><item><title>Il materiale dell' Architect Insight Conferenze</title><link>http://blogs.msdn.com/mariofontana/archive/2008/05/19/il-materiale-dell-architect-insight-conferenze.aspx</link><pubDate>Mon, 19 May 2008 17:59:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8519118</guid><dc:creator>mfontana</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/8519118.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=8519118</wfw:commentRss><description>&lt;p&gt;Il 28 e 29 Aprile si &amp;#232; svolto l' &lt;strong&gt;Architect Insight Conference &lt;/strong&gt;in una stupenda cornice bucolica very british :-) appena fuori Londra. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ArchitectInsightConferenze.ilmateriale_F716/DSCF0160_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="DSCF0160" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ArchitectInsightConferenze.ilmateriale_F716/DSCF0160_thumb.jpg" width="366" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ArchitectInsightConferenze.ilmateriale_F716/DSCF0162_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="280" alt="DSCF0162" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ArchitectInsightConferenze.ilmateriale_F716/DSCF0162_thumb.jpg" width="372" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Per me &amp;#232; stata l'occasione di rivedere alcuni colleghi ed amici... immersi nel verde :-)... ma lontani dai pub... :-( &lt;/p&gt;  &lt;p&gt;La conferenza dedicata a &lt;strong&gt;Senior Architects&lt;/strong&gt;, &lt;strong&gt;CTOs &lt;/strong&gt;e &lt;strong&gt;decision makers &lt;/strong&gt;quest'anno &amp;#232; stata suddivisa in quattro focalizzazioni : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enterprise Architecture &lt;/li&gt;    &lt;li&gt;Infrastructure Architecture &lt;/li&gt;    &lt;li&gt;Solution Architecture &lt;/li&gt;    &lt;li&gt;Software plus Services. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Lato sicurezza consiglio di visionare le presentazioni di &lt;strong&gt;Steve Plank &lt;/strong&gt;(ottimo speaker) su:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;a href="http://download.microsoft.com/documents/uk/msdn/events/INF/INF04.pptx" target="_blank"&gt;A Claims Based Identity System&lt;/a&gt; &lt;/strong&gt;dove tratta i concetti di base che hanno portato alla definizione dell' Identity Metasystem.&lt;strong&gt;&amp;#160;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;a href="http://download.microsoft.com/documents/uk/msdn/events/INF/INF06.pptx" target="_blank"&gt;Whiteboard discussion of WS-Federation e WS-Trust&lt;/a&gt;&lt;/strong&gt;. Questa sessione non &amp;#232; proprio introduttiva per&amp;#242; permette di capire il flusso dei messaggi definiti dalle due specifiche. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La sessione di &lt;strong&gt;Benjamin Ravani &lt;/strong&gt;(GM diGlobal Foundation Services) : &lt;strong&gt;&lt;a href="http://download.microsoft.com/documents/uk/msdn/events/Keynote/KEY%2003.pptx" target="_blank"&gt;Building Resilient Web Services&lt;/a&gt; &lt;/strong&gt;invece riporta alcune interessanti considerazioni sulle sicurezza e disponibilit&amp;#224; di servizi su Internet anche se da un'occhio prettamente sistemistico.&lt;/p&gt;  &lt;p&gt;Infine, segnalo la sessione di &lt;strong&gt;Steve Lamb &lt;/strong&gt;su &lt;strong&gt;&lt;a href="http://download.microsoft.com/documents/uk/msdn/events/INF/INF03.pptx" target="_blank"&gt;Security Management for Dynamic virtual systems with Server 2008 and System Center&lt;/a&gt; &lt;/strong&gt;per capire i principali rischi di sicurezza (e non solo) legate all'introduzione della virtualization all'interno delle nostre infrastrutture applicative.&lt;/p&gt;  &lt;p&gt;L'intero materiale lo potete trovare sul sito di &lt;a href="http://msdn.microsoft.com/en-gb/architecture/cc531255.aspx" target="_blank"&gt;Microsoft UK&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8519118" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Software+Plus+Services/default.aspx">Software Plus Services</category></item><item><title>Cosa intendiamo per Infrastruttura Applicativa</title><link>http://blogs.msdn.com/mariofontana/archive/2008/04/22/cosa-intendiamo-per-infrastruttura-applicativa.aspx</link><pubDate>Tue, 22 Apr 2008 10:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8414442</guid><dc:creator>mfontana</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/8414442.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=8414442</wfw:commentRss><description>&lt;P&gt;L’ Infrastruttura applicativa può essere vista come l’estensione dell’infrastruttura sistemistica capace di offrire servizi ad un insieme controllato di applicazioni. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=355 alt=image src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_thumb.png" width=550 border=0 mce_src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Questa infrastruttura è un insieme di componenti e servizi che consentono alle applicazioni di comunicare con altrettanti servizi (sia locali che remoti). &lt;BR&gt;L’ Infrastruttura applicativa si occupa qindi di fornire delle funzionalità di base ed avanzate che siano trasversali alle applicazioni oltre ad un insieme di regole sulla modalità di comunicazione che deve essere utilizzata da e per ciascun servizio, rendendo questi dettagli trasparenti alle applicazioni:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=387 alt=image src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_thumb_1.png" width=555 border=0 mce_src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/CosaintendiamoperInfrastrutturaApplicati_BF0E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I servizi di base sono ad esempio &lt;STRONG&gt;Autenticazione&lt;/STRONG&gt;, &lt;STRONG&gt;Autorizzazione&lt;/STRONG&gt;, &lt;STRONG&gt;Identity Flow&lt;/STRONG&gt;, &lt;STRONG&gt;Logging&lt;/STRONG&gt;, &lt;STRONG&gt;Instrumentation&lt;/STRONG&gt;, &lt;STRONG&gt;Discovery&lt;/STRONG&gt;, ecc.. mentre i servizi avanzati (o di runtime) possono essere : &lt;STRONG&gt;Mail&lt;/STRONG&gt;, &lt;STRONG&gt;Fax&lt;/STRONG&gt;, &lt;STRONG&gt;Extarnal Services&lt;/STRONG&gt;, ecc..&lt;/P&gt;
&lt;P&gt;L’utilizzo dei servizi consente di realizzare un sistema secondo i canoni &lt;STRONG&gt;Services Oriented Architecture (SOA)&lt;/STRONG&gt; rendendo omogenei e interoperabili i servizi esposti dall’enterprise. SOA sfrutta gli standard di mercato come XML/SOAP e WS-* come definizione delle caratteristiche a cui i servizi esposti aderiscono per consentire comunicazioni sicure, scalabili, reliable, interoperabili, … &lt;/P&gt;
&lt;P&gt;Le specifiche WS-*, però, definiscono solo le caratteristiche a cui i WS devono sottostare, lasciando l’implementazione libera. In ambito &lt;STRONG&gt;Enterprise&lt;/STRONG&gt; tale libertà introduce la necessità di realizzare un’infrastruttura (o framework) che implementi i servizi base di WS-* mettendoli a disposizione dei WS in modo semplice e trasparente. Rendere i servizi sviluppati indipendenti da quelli base è inoltre garanzia di evoluzione: l’infrastruttura di base è in grado di evolvere seguendo i nuovi standard senza richiedere la modifica dei servizi sviluppati. La presenza di un framework, quindi, consente di poter realizzare una parte fondamentale della SOA disaccoppiando le applicazioni di business dalle caratteristiche d'infrastruttura creando un sistema omogeneo, aderente agli standard, facile da manutenere e da evolvere.&lt;/P&gt;
&lt;P&gt;L’ Infrastruttura applicativa dovrà inoltre consentire l’implementazione di differenti &lt;STRONG&gt;Message Exchange Pattern &lt;/STRONG&gt;(&lt;STRONG&gt;MEP&lt;/STRONG&gt;) attraverso tipologie di contratti differenti come ad esempio :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Request/Reply&lt;/LI&gt;
&lt;LI&gt;OneWay&lt;/LI&gt;
&lt;LI&gt;Duplex&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;L’ Infrastruttura applicativa fornisce quindi dei servizi a valore aggiunto utilizzabili per tutti i servizi definiti all’interno ed all’esterno dell' Enterprise (sia servizi di basso livello sia servizi di business veri e propri), consentendo al programmatore applicativo di concentrarsi sulla logica della funzionalità specifica senza preoccuparsi della parte infrastrutturale. Inoltre consente di separare gli aspetti di gestione e configurazione dal codice di ciascuna funzionalità, permettendo a chi gestisce l’applicazione di modificare le caratteristiche infrastrutturali senza ricompilare l’applicazione. All’interno dei servizi di base l’ Infrastruttura applicativa è in grado di fornire anche le seguenti funzionalità a valore aggiunto:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Trasporto di informazioni di contesto indipendenti dai singoli servizi.&lt;/LI&gt;
&lt;LI&gt;Caching dei dati restituiti dai servizi&lt;/LI&gt;
&lt;LI&gt;Monitoraggio della comunicazione (tracing, performance counters)&lt;/LI&gt;
&lt;LI&gt;Indipendenza dei chiamanti dalla locazione fisica dei servizi (indirizzamento dinamico)&lt;/LI&gt;
&lt;LI&gt;Gestione centralizzata delle policies ed autoconfigurazione degli endpoint&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;prossiamanente vediamo come progettare e realizzare una infrastruttura applicativa con .NET&lt;/P&gt;
&lt;P&gt;--Mario&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8414442" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Architetture+applicative/default.aspx">Architetture applicative</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Specifiche+di+Base/default.aspx">Specifiche di Base</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/EDA/default.aspx">EDA</category></item><item><title>Progetto : WCF Security</title><link>http://blogs.msdn.com/mariofontana/archive/2008/04/11/progetto-wcf-security.aspx</link><pubDate>Fri, 11 Apr 2008 16:00:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8376434</guid><dc:creator>mfontana</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mariofontana/comments/8376434.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mariofontana/commentrss.aspx?PostID=8376434</wfw:commentRss><description>&lt;p&gt;Su CodePlex &amp;#232; nato &lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;questo&lt;/a&gt; nuovo interessantissimo progetto di &lt;em&gt;Patterns and Practices&lt;/em&gt; dedicato a &lt;strong&gt;WCF&lt;/strong&gt; (Windows Communication Foundation) e la sicurezza. Una delle novit&amp;#224; che ho maggiormente apprezzato &amp;#232; la suddivisione in scenari e relativa documentazione in stile how-to in modo da essere quanto pi&amp;#249; veloci nell'adattare le proprie soluzioni secondo queste best practices di sicurezza.&lt;/p&gt;  &lt;p&gt;Sono disponibili anche vari video. Il progetto &amp;#232; appena iniziato e quindi manca ancora di molte parti essenziali ma &amp;#232; solo questione di tempo...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Alcune curiosit&amp;#224;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;La struttura di questo progetto nasce da un lavoro pubblicato ormai nel lontano &lt;strong&gt;28 maggio 2004&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ProgettoWCFSecurity_13F30/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ProgettoWCFSecurity_13F30/image_thumb.png" width="201" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Il focus di questo &lt;strong&gt;BIGINO &lt;/strong&gt;(&lt;strong&gt;919 pagine&lt;/strong&gt;) era l'architettura e l'implementazione di soluzione Web (pi&amp;#249;) sicure con &lt;strong&gt;.NET 1.1. &lt;/strong&gt;Le tecnologie toccate quindi erano ASP.NET, CAS, Enterprise Services (COM+), Web Services, Remoting e data access. Il tomo era fatto bene ed entrava nei dettagli delle singole configurazioni suddivise per scenari (internet , intranet).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gli anni passano e il &lt;strong&gt;7 Agosto 2007&lt;/strong&gt; abbiamo un nuovo libro sulla sicurezza delle applicazioni incentrato questa volta solo sui Web Services con l'allora mitico &lt;strong&gt;WSE 3.0 &lt;/strong&gt;(&lt;em&gt;Web Services Enhancement &lt;/em&gt;- nome in codice &lt;em&gt;WSDK Web Services SDK&lt;/em&gt;). sottolineao la versione 3.0, l'unica compatibile a livello di specifiche (non sempre per&amp;#242; :-)) con WCF.. Era la &lt;strong&gt;Web Service Security Guide&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ProgettoWCFSecurity_13F30/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/mariofontana/WindowsLiveWriter/ProgettoWCFSecurity_13F30/image_thumb_1.png" width="202" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Anche in questo caso abbiamo la suddivisione in scenari (molto pi&amp;#249; articolati rispetto al precedente)...L'unico problema di questo &lt;strong&gt;MINI BIGINO&lt;/strong&gt; (&lt;strong&gt;solo 359 pagine&lt;/strong&gt;) fa dei ragionamenti su un modello di programmazione basato su WSE che a livello architetturale &amp;#232; molto diverso da WCF...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;cosa manca al nuovo lavoro?? Beh, una copertina :-)&lt;/p&gt;  &lt;p&gt;--Mario&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8376434" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mariofontana/archive/tags/Sicurezza/default.aspx">Sicurezza</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/WS-_2A00_/default.aspx">WS-*</category><category domain="http://blogs.msdn.com/mariofontana/archive/tags/XML/default.aspx">XML</category></item></channel></rss>