[OT}Secondo voi come si fa ad arrivare in un posto così ?

Il passo della predaia, un panorama da togliere il fiato e il silenzio assoluto  (dopo avere spento la moto)

 

Percorsi_d_Anaunia_Predaia__x_Email_640x480                                                                                                                                      

 

Naturalmente con una naked... la mia!!!!  :D. Basta fermarsi prima della pista bianca a quel punto diventa veramente un pò complicato...  

          img086                                                                                                                                          

 

Ho visto che ci sono tanti motociclisti in Ugi, perché non creare un ugidotnet motor club ?  ;)

ps

La seconda foto è fatta con il telefonino e terribilmente controluce vista  l'ora , la prima ,dato che la mia non rendeva l'ho tirata giù da internet , non so se si nota la differenza... :D

Ale

WCF vs WS-*

 

In questi giorni mi trovo a litigare con header soap e standard WS -* vari.  Uno dei problemi era di capire cosa wcf mette a disposizione.. beh  ... un mare di roba!!

Molti standard sono implementati out of the box  , esempio : ws addressing, ws reliable messaging, ws atomic transaction, ws security ...e non li ho citati tutti (per una visione di insieme sui vari standard  : Making Sense of all these Crazy Web Service Standards)

Per avere dei riferimenti sul mapping wcf /ws* potete leggere questo articolo davvero utile su topxml.

Non solo vi parla del mapping binding ma dà anche qualche dritta sugli switch di configurazione che permettono di configurare il wcf in modo che l'header soap esca nel formato desiderato.

Facciamo un esempio  pratico, supponiamo di volere realizzare un'autenticazione consumer - service tramite scambio di certificati , senza entrare nel merito della configurazione (mi riprometto di scrivere qualcosa di completo su questo fra qualche giorno) 

Nel codice del contratto mettiamo pure quello che vogliamo nell'ambito della decenza informatica :)  basta non inserire codice per bypassare la configurazione.

Utilizzando in modo "normale" gli attributi (tipo l'esempio generato dal visual studio nella creazione di un servizio WCF ) usare servizi non protetti in basic http, piuttosto che protetti con token di vario genere e natura diventa solo un problema di configurazione totalmente trasparente a chi sviluppa il codice.

Mettiamo su la nostra infrastruttura di sicurezza :

Nel behaviour specifichiamo le credenziali con le quali il servizio si presenterà al client  e il modo in cui il servizio autenticherà il client:

<serviceBehaviors>
    <behavior name="CertBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <serviceCredentials>
      <clientCertificate>
       <authentication certificateValidationMode="ChainTrust" revocationMode="NoCheck" />
      </clientCertificate>
      <serviceCertificate findValue="CN=DEVCER" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName" />
     </serviceCredentials>
    </behavior>
   </serviceBehaviors>

 

Utilizziamo per il nostro endpoint il seguente Binding :

 <wsHttpBinding>
    <binding name="SecuredByCertificate">
     <reliableSession enabled="false" />
     <security>
      <transport clientCredentialType="None" />
      <message clientCredentialType="Certificate" negotiateServiceCredential="false" establishSecurityContext="false" />
     </security>
    </binding>
   </wsHttpBinding>

Occhio alla parte in rosso ci servirà più avanti..

Il servizio sarà configurato cosi :

   <service behaviorConfiguration="CertBehavior" name="WcfService1.Service1">
    <endpoint address="" behaviorConfiguration="CustomBehav" binding="wsHttpBinding"      bindingConfiguration="SecuredByCertificate" contract="WcfService1.IService1">
     <identity>
      <dns value="DEVCER" />
     </identity>
    </endpoint>
   </service>

Questo è un estratto della policy di sicurezza nel wsdl ottenuto dal  binding con i nostri switch impostati a false , ingrandendo l'immagine si nota  che si utilizza un X509Token

clip_image001

 

Adesso invece reimpostiamo a true i nostri famosi flag di configurazione  : "negotiateServiceCredential="true" establishSecurityContext="true"

Quello che otteniamo è un policy di sicurezza abbastanza diversa basata su  SCT (security context token) ovvero stiamo applicando la policy di WS-SecureConversation

image

 

Sottolineo che  se non avessimo spulciato il wsdl  ( o l'header soap che evito di allegare perché un tantinello ingombrante ) e avessimo utilizzato un consumer .Net che abbiamo tranquillamente agganciato al servizio utilizzando l'add service reference di VS 2008, non ci saremmo minimamente accorti che il meccanismo di autenticazione  utilizzato è sostanzialmente diverso(salvo sentire le imprecazioni del collega java che si aspettava un'altra policy di sicurezza )  : nel caso dell'X509 token fondamentalmente viene utilizzato un meccanismo di cifratura a chiave asimmetrica, mentre nel caso dell'sct si utilizza un meccanismo di cifratura a chiave simmetrica (più efficiente computazionalmente) ma che comporta una serie di chiamate in più per lo scambio in sicurezza della chiave simmetrica.

Grazie ai sopravvissuti arrivati fin qui nella lettura   

                   Ale

«settembre»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011