Procedura: accedere a WSE 3.0 Service con un client WCF
I client Windows Communication Foundation (WCF) sono compatibili a livello di rete con Web Services Enhancements (WSE) 3.0 per i servizi Microsoft .NET quando i client WCF sono configurati per utilizzare la versione dell'agosto 2004 della specifica WS-Addressing. I servizi WSE 3.0, tuttavia, non supportano il protocollo di scambio dei metadati (MEX), pertanto quando si utilizza Service Metadata Utility Tool (SvcUtil.exe) per creare una classe client WCF, le impostazioni di protezione non vengono applicate al client WCF generato. È quindi necessario specificare le impostazioni di protezione richieste dal servizio WSE 3.0 dopo la generazione del client WCF.
È possibile applicare queste impostazioni di protezione utilizzando un'associazione personalizzata per prendere in considerazione i requisiti del servizio WSE 3.0 e i requisiti interoperativi tra un servizio WSE 3.0 e un client WCF. I requisiti di interoperabilità includono l'utilizzo della specifica dell'agosto 2004 di WS-Addressing e la protezione dei messaggi predefinita di WSE 3.0 di SignBeforeEncrypt. La protezione dei messaggi predefinita per WCF è SignBeforeEncryptAndEncryptSignature. In questo argomento viene illustrato come creare un'associazione WCF che interopera con un servizio WSE 3.0. In WCF viene fornito anche un esempio in cui è incorporata questa associazione. Per ulteriori informazioni su questo esempio, vedere Interoperating with WSE.
Per accedere a un servizio Web WSE 3.0 con un client WCF
Eseguire Service Metadata Utility Tool (SvcUtil.exe) per creare un client WCF per il servizio Web WSE 3.0.
Per un Servizio Web WSE 3.0, viene creato un client WCF. Dato che WSE 3.0 non supporta il protocollo MEX, non è possibile utilizzare lo strumento per recuperare i requisiti di protezione per il servizio Web. Lo sviluppatore dell'applicazione deve aggiungere le impostazioni di protezione per il client.
Per ulteriori informazioni sulla creazione di un client WCF, vedere Procedura: creare un client di Windows Communication Foundation.
Creare una classe che rappresenta un'associazione in grado di comunicare con i servizi Web WSE 3.0.
La classe seguente fa parte dell'esempio Interoperating with WSE:
- Creare una classe che derivi dalla classe Binding.
Nell'esempio di codice seguente viene creata una classe denominataWseHttpBinding
che deriva dalla classe Binding. - Aggiungere alla classe le proprietà che specificano l'asserzione turnkey WSE utilizzata dal servizio WSE, se sono necessarie chiavi derivate, se sono utilizzate sessioni protette, se sono necessarie conferme della firma e le impostazioni della protezione dei messaggi. In WSE 3.0, un'asserzione turnkey specifica i requisiti di protezione per un client o un servizio Web, in modo analogo alla modalità di autenticazione di un'associazione in WCF.
Nell'esempio di codice seguente vengono definite le proprietàSecurityAssertion
,RequireDerivedKeys
,EstablishSecurityContext
eMessageProtectionOrder
che specificano l'asserzione turnkey WSE, se sono necessarie chiavi derivate, se sono utilizzate sessioni protette, se sono necessarie conferme di firma e le impostazioni di protezione dei messaggi. - Eseguire l'override del metodo CreateBindingElements per impostare le proprietà dell'associazione.
Nell'esempio di codice seguente vengono specificati il trasporto, la codifica messaggi e le impostazioni della protezione dei messaggi ottenendo i valori delle proprietàSecurityAssertion
eMessageProtectionOrder
.
- Creare una classe che derivi dalla classe Binding.
Nel codice dell'applicazione client, aggiungere il codice per impostare le proprietà dell'associazione.
Nell'esempio di codice seguente viene specificato che il client WCF deve utilizzare la protezione e l'autenticazione dei messaggi, come definito dall'asserzione di protezione turnkey WSE 3.0AnonymousForCertificate. Sono inoltre necessarie sessioni protette e chiavi derivate.
Esempio
Nell'esempio di codice seguente viene definita un'associazione personalizzata che espone proprietà che corrispondono a quelle di un'asserzione di protezione turnkey WSE 3.0. L'associazione personalizzata, denominata WseHttpBinding
, viene quindi utilizzata per specificare le proprietà di associazione per un client WCF che comunica con l'esempio della Guida rapida WSSecurityAnonymous WSE 3.0.