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.
In questo esempio viene illustrato l'utilizzo della protezione del trasporto SSL in combinazione con l'inclusione delle credenziali client nel messaggio. In questo esempio viene utilizzata l'associazione wsHttpBinding.
Per impostazione predefinita, l'associazione wsHttpBinding consente la comunicazione HTTP. Se viene configurata per la protezione del trasporto, l'associazione supporta la comunicazione HTTPS. Il protocollo HTTPS garantisce la riservatezza e l'integrità dei messaggi trasmessi in rete. Tuttavia la serie di meccanismi di autenticazione che possono essere utilizzati per autenticare il client nel servizio è limitata ai meccanismi supportati dal trasporto HTTPS. Windows Communication Foundation (WCF) offre una modalità di protezione TransportWithMessageCredential progettata per superare questa limitazione. Se è configurata questa modalità di protezione, viene utilizzata la protezione del trasporto per garantire la riservatezza e l'integrità dei messaggi trasmessi e per eseguire l'autenticazione del servizio. Tuttavia, l'autenticazione client viene eseguita inserendo la credenziale client direttamente nel messaggio. In questo modo è possibile utilizzare qualsiasi tipo di credenziale supportato dalla modalità di protezione dei messaggi per l'autenticazione del client, mantenendo i vantaggi a livello di prestazioni offerti dalla modalità di protezione del trasporto.
In questo esempio viene utilizzato un tipo di credenziale UserName per autenticare il client presso il servizio.
L'esempio è basato su Esempio della guida introduttiva, che implementa un servizio di calcolatrice. L'associazione wsHttpBinding è specificata e configurata nei file di configurazione dell'applicazione per il client e il servizio.
Nota
La procedura di installazione e le istruzioni di generazione per questo esempio si trovano alla fine di questo argomento.
Il codice del programma nell'esempio è quasi identico a quello del servizio Esempio della guida introduttiva. È tuttavia presente un'operazione aggiuntiva fornita dal contratto di servizio, ovvero GetCallerIdentity. Questa operazione restituisce il nome dell'identità del chiamante al chiamante.
public string GetCallerIdentity()
{
// Use ServiceSecurityContext.WindowsIdentity to get the name of the caller.
return ServiceSecurityContext.Current.WindowsIdentity.Name;
}
È necessario creare un certificato e assegnarlo utilizzando la Gestione guidata certificati server Web prima di compilare ed eseguire l'esempio. Le definizioni dell'endpoint e dell'associazione nelle impostazioni del file di configurazione abilitano la modalità di protezione TransportWithMessageCredential, come illustrato nella configurazione di esempio seguente per il client.
<system.serviceModel>
<client>
<endpoint name=""
address="https://localhost/servicemodelsamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>
<bindings>
<wsHttpBinding>
<!--
This configuration defines the security mode as TransportWithMessageCredential.
and the clientCredentialType as UserName.
-->
<binding name="Binding1">
<security mode ="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
L'indirizzo specificato utilizza lo schema https://. La configurazione dell'associazione imposta la modalità di protezione su TransportWithMessageCredential. La stessa modalità di protezione deve essere specificata nel file Web.config del servizio.
Poiché il certificato utilizzato in questo esempio è un certificato di prova creato con Makecert.exe, viene visualizzato un avviso di protezione quando si tenta di accedere a un indirizzo https: nel browser, ad esempio https://localhost/servicemodelsamples/service.svc. Per consentire al client WCF di lavorare con un certificato di prova, è stato aggiunto altro codice al client per sopprimere l'avviso di protezione. Il codice e la classe associata non sono richiesti quando si utilizzano i certificati di produzione.
// WARNING: This code is only needed for test certificates such as those created by makecert. It is
// not recommended for production code.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");
Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Premere INVIO nella finestra del client per arrestare il client.
Username authentication required.
Provide a valid machine or domain account. [domain\\user]
Enter username:
YourDomainName\YourAccountName
Enter password:
****** YourDomainName\YourAccountName Add(100,15.99) = 115.99 Subtract(145,76.54) = 68.46 Multiply(9,81.25) = 731.25 Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Per impostare, compilare ed eseguire l'esempio
Assicurarsi di avere eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Assicurarsi di avere eseguito la Istruzioni di installazione certificato server IIS (Internet Information Services).
Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.
Per eseguire l'esempio su un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.