Procedura: rappresentare un client in un servizio

La rappresentazione di un client in un servizio Windows Communication Foundation (WCF) consente a quest'ultimo di eseguire azioni per conto del client. Per le azioni soggette ai controlli dell'elenco di controllo di accesso (ACL), ad esempio l'accesso a directory e file in un computer o l'accesso a un database SQL Server, il controllo ACL si basa sull'account utente del client. In questo argomento vengono illustrati i passaggi di base necessari che consentono a un client in un dominio Windows di impostare un livello di rappresentazione di client. Per un esempio pratico, vedere Impersonating the Client. Per ulteriori informazioni sulla rappresentazione di client, vedere Delega e rappresentazione con WCF.

Nota

Quando il client e il servizio sono in esecuzione nello stesso computer e il client è in esecuzione con un account del sistema (ad esempio Local System o Network Service), il client non può essere rappresentato quando viene stabilita una sessione protetta con token del contesto di protezione con stato. Un'applicazione Windows Form o console viene in genere eseguita con l'account attualmente connesso che quindi può essere rappresentato per impostazione predefinita. Tuttavia, quando il client è una pagina ASP.NET ospitata in IIS 6.0 o IIS 7.0, il client viene eseguito con l'account Network Service per impostazione predefinita. Tutte le associazioni fornite dal sistema che supportano le sessioni protette utilizzano un token del contesto di protezione senza stato per impostazione predefinita. Se , tuttavia, il client è una pagina ASP.NET e si utilizzano sessioni protette con token del contesto di protezione con stato, non è possibile eseguire la rappresentazione del client. Per ulteriori informazioni sull'utilizzo di token del contesto di protezione con stato in una sessione protetta, vedere Procedura: creare un token di contesto di protezione con stato per una sessione protetta.

Per consentire la rappresentazione di un client da un token di Windows memorizzato nella cache in un servizio

  1. Creare il servizio. Per un'esercitazione su questa procedura di base, vedere Esercitazione introduttiva.

  2. Utilizzare un'associazione che utilizza l'autenticazione di Windows e che crea una sessione, ad esempio NetTcpBinding o WSHttpBinding.

  3. Quando si crea l'implementazione dell'interfaccia del servizio, applicare la classe OperationBehaviorAttribute al metodo che richiede la rappresentazione del client. Impostare la proprietà Impersonation su Required.

Per impostare il livello di rappresentazione consentito nel client

  1. Creare un codice per client di servizi tramite ServiceModel Metadata Utility Tool (Svcutil.exe). Per ulteriori informazioni, vedere Accesso ai servizi tramite client WCF.

  2. Dopo la creazione del client WCF, impostare la proprietà AllowedImpersonationLevel della classe WindowsClientCredential su uno dei valori di enumerazione di TokenImpersonationLevel.

    Nota

    Per utilizzare Delegation, deve essere utilizzata l'autenticazione Kerberos negoziata (talvolta denominata multifase Kerberos). Per una descrizione sull'implementazione, vedere Procedure consigliate per la protezione in WCF.

Vedere anche

Riferimenti

OperationBehaviorAttribute
TokenImpersonationLevel

Concetti

Delega e rappresentazione con WCF

Altre risorse

Impersonating the Client