Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I servizi pubblicano spesso metadati per abilitare la generazione automatica e la configurazione dei tipi di proxy client. Quando il servizio non è attendibile, le applicazioni client devono verificare che i metadati siano conformi ai criteri dell'applicazione client relativi alla sicurezza, alle transazioni, al tipo di contratto di servizio e così via. L'esempio seguente illustra come scrivere un comportamento dell'endpoint client che convalida l'endpoint di servizio per garantire che l'endpoint del servizio sia sicuro da usare.
Il servizio espone quattro endpoint di servizio. Il primo endpoint usa WSDualHttpBinding, il secondo endpoint usa l'autenticazione NTLM, il terzo endpoint abilita il flusso delle transazioni e il quarto endpoint usa l'autenticazione basata su certificati.
Il client usa la MetadataResolver classe per recuperare i metadati per il servizio. Il client applica una politica che vieta le associazioni duplex, l'autenticazione NTLM e il flusso delle transazioni attraverso un comportamento di validazione. Per ogni ServiceEndpoint istanza importata dai metadati del servizio, l'applicazione client aggiunge un'istanza del comportamento dell'endpoint InternetClientValidatorBehavior a ServiceEndpoint prima di tentare di usare un client Windows Communication Foundation (WCF) per connettersi all'endpoint. Il metodo del comportamento viene eseguito prima che Validate vengano chiamate le operazioni sul servizio e applichi i criteri del client generando InvalidOperationExceptions.
Per costruire l'esempio
- Per compilare la soluzione, seguire le istruzioni riportate in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio nello stesso computer
Aprire un prompt dei comandi per gli sviluppatori per Visual Studio con privilegi di amministratore ed eseguire Setup.bat dalla cartella di installazione di esempio. Vengono installati tutti i certificati necessari per l'esecuzione dell'esempio.
Eseguire l'applicazione di servizio da \service\bin\Debug.
Eseguire l'applicazione client da \client\bin\Debug. L'attività client viene visualizzata nell'applicazione console client.
Se il client e il servizio non sono in grado di comunicare, vedere Suggerimenti per la risoluzione dei problemi per gli esempi WCF.
Rimuovere i certificati eseguendo Cleanup.bat al termine dell'esempio. Altri esempi di sicurezza usano gli stessi certificati.
Per eseguire l'esempio tra computer
Nel server, in Prompt dei Comandi per Sviluppatori di Visual Studio, eseguendo con privilegi di amministratore, digitare
setup.bat service. L'esecuzione disetup.batcon l'argomentoservicecrea un certificato del servizio con il nome di dominio completo del computer ed esporta il certificato del servizio in un file denominato Service.cer.Nel server modificare App.config in modo da riflettere il nuovo nome del certificato. Cioè, modificare l'attributo
findValuenell'elemento <serviceCertificate> impostandolo sul nome di dominio completo del computer.Copiare il file Service.cer dalla directory del servizio alla directory client nel computer client.
Nel client aprire un prompt dei comandi per gli sviluppatori per Visual Studio con privilegi di amministratore e digitare
setup.bat client. L'esecuzionesetup.batcon l'argomentoclientcrea un certificato client denominato Client.com ed esporta il certificato client in un file denominato Client.cer.Nel file client.cs, modificare il valore dell'indirizzo dell'endpoint MEX e utilizzare `
findValue` per impostare il certificato server predefinito affinché corrisponda al nuovo indirizzo del servizio. Per fare ciò, sostituire localhost con il nome di dominio completo del server. Ricostruzione.Copiare il file Client.cer dalla directory client alla directory del servizio nel server.
Nel client eseguire ImportServiceCert.bat in un prompt dei comandi per gli sviluppatori per Visual Studio aperto con privilegi di amministratore. Questo importa il certificato del servizio dal file Service.cer nell'archivio CurrentUser - TrustedPeople.
Nel server eseguire ImportClientCert.bat in un prompt dei comandi per gli sviluppatori per Visual Studio aperto con privilegi di amministratore. Questo importa il certificato client dal file Client.cer nell'archivio LocalMachine - TrustedPeople.
Nel computer del servizio compilare il progetto di servizio in Visual Studio ed eseguire service.exe.
Nel computer client eseguire client.exe.
- Se il client e il servizio non sono in grado di comunicare, vedere Suggerimenti per la risoluzione dei problemi per gli esempi WCF.
Per eseguire la pulizia dopo l'esempio
Eseguire Cleanup.bat nella cartella samples dopo aver completato l'esecuzione dell'esempio.
Annotazioni
Questo script non rimuove i certificati del servizio in un client durante l'esecuzione di questo esempio tra computer. Se hai eseguito esempi WCF che utilizzano certificati su più computer, assicurati di eliminare i certificati di servizio installati nell'archivio CurrentUser - TrustedPeople. A tale scopo, usare il comando seguente:
certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. For example: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com.