Condividi tramite


Convalida client

I servizi pubblicano spesso metadati per consentire la generazione e configurazione automatica di tipi di proxy client. Quando il servizio non è considerato attendibile, le applicazioni client devono convalidare che i metadati siano conformi ai criteri dell'applicazione client riguardanti la protezione, le transazioni, il tipo di contratto di servizio e così via. Nell'esempio seguente viene dimostrato come scrivere un comportamento dell'endpoint client che convalida l'endpoint del servizio per garantire che quest'ultimo possa essere utilizzato senza rischi.

Il servizio espone quattro endpoint del servizio. Il primo endpoint utilizza WSDualHttpBinding, il secondo utilizza l'autenticazione NTLM, il terzo abilita il flusso delle transazioni e il quarto utilizza l'autenticazione basata sui certificati.

Il client utilizza la classe MetadataResolver per recuperare i metadati per il servizio. Il client applica un criterio di proibizione delle associazioni duplex, autenticazione NTLM e flusso delle transazioni utilizzando un comportamento di convalida. Per ogni istanza ServiceEndpoint importata dai metadati del servizio, l'applicazione client aggiunge un'istanza del comportamento dell'endpoint InternetClientValidatorBehavior a ServiceEndpoint prima di tentare di utilizzare un client Windows Communication Foundation (WCF) per connettersi all'endpoint. Il metodo Validate del comportamento viene eseguito prima che venga chiamata qualsiasi operazione nel servizio e applica il criterio del client generando InvalidOperationExceptions.

Per compilare l'esempio

  1. Per compilare la soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

Per eseguire l'esempio sullo stesso computer

  1. Eseguire Setup.bat dalla cartella di installazione dell'esempio. In questo modo vengono installati tutti i certificati necessari per l'esecuzione dell'esempio.

  2. Eseguire l'applicazione di servizio da \service\bin\Debug.

  3. Eseguire l'applicazione client da \client\bin\Debug. L'attività del client viene visualizzata nella finestra dell'applicazione console.

  4. Se il client e il servizio non sono in grado di comunicare, vedere Suggerimenti per la risoluzione dei problemi.

  5. Rimuovere i certificati eseguendo Cleanup.bat una volta completato l'esempio. Gli altri esempi relativi alla protezione utilizzano gli stessi certificati.

Per eseguire l'esempio tra più computer

  1. Nel server, digitare setup.bat service. L'esecuzione di setup.bat con l'argomento service crea un certificato del servizio con il nome di dominio completo del computer ed esporta il certificato del servizio in un file denominato Service.cer.

  2. Modificare App.config sul server per riflettere il nome del nuovo certificato. Ovvero, modificare l'attributo findValue nell'elemento <serviceCertificate> of <serviceCredentials> Element al nome di dominio completo del computer.

  3. Copiare il file Service.cer dalla directory del servizio alla directory del client sul computer client.

  4. Nel client, digitare setup.bat client. L'esecuzione di setup.bat con l'argomento client crea un certificato client denominato Client.com ed esporta il certificato client in un file denominato Client.cer.

  5. Nel file client.cs modificare il valore dell'indirizzo dell'endpoint MEX e il findValue per impostare il certificato del server predefinito in modo che corrisponda al nuovo indirizzo del servizio. Tale operazione viene eseguita sostituendo localhost con il nome di dominio completo del server. Ricompilare il file.

  6. Copiare il file Client.cer dalla directory del client alla directory del servizio sul server.

  7. Nel client, eseguire ImportServiceCert.bat. In questo modo viene importato il certificato del servizio dal file Service.cer nell'archivio CurrentUser - TrustedPeople.

  8. Nel server, eseguire ImportClientCert.bat. In questo modo viene importato il certificato del client dal file Client.cer nell'archivio LocalMachine - TrustedPeople.

  9. Nel computer del servizio, compilare il progetto di servizio in Visual Studio ed eseguire service.exe.

  10. Nel computer client, eseguire client.exe.

    1. Se il client e il servizio non sono in grado di comunicare, vedere Suggerimenti per la risoluzione dei problemi.

Per eseguire la pulitura dopo l'esempio

  • Eseguire Cleanup.bat nella cartella degli esempi una volta completato l'esempio.

    Nota

    Questo script non rimuove i certificati del servizio su un client quando si esegue questo esempio tra più computer. Se sono stati eseguiti esempi di WCF che utilizzano certificati tra più computer, assicurarsi di cancellare i certificati del servizio installati nell'archivio CurrentUser - TrustedPeople. A questo scopo, utilizzare il comando seguente: certmgr -del -r CurrentUser -s TrustedPeople -c -n <Nome completo del computer server>. Ad esempio: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com.

Vedere anche

Altre risorse

Using Metadata

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.