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.
La rappresentazione di un client in un servizio Windows Communication Foundation (WCF) consente al servizio di eseguire azioni per conto del client. Per le azioni soggette a controlli dell'elenco di controllo di accesso (ACL), come l'accesso a directory e file su un computer o l'accesso a un database di SQL Server, il controllo ACL viene effettuato sull'account utente del client. In questo argomento vengono spiegati i passaggi di base necessari per consentire a un client in un dominio Windows di impostare un livello di impersonificazione. Per un esempio funzionante, vedere Impersonificazione del client. Per ulteriori informazioni sull'impersonificazione del client, vedere Delega e impersonificazione.
Annotazioni
Quando il client e il servizio sono in esecuzione nello stesso computer e il client è in esecuzione con un account di sistema (ovvero Local System o Network Service), il client non può essere impersonato quando viene stabilita una sessione protetta con token contestuali di sicurezza con stato. Un'applicazione WinForms o console viene in genere eseguita con l'account attualmente connesso, in modo che l'account possa essere rappresentato per impostazione predefinita. Tuttavia, quando il client è una pagina ASP.NET e tale pagina è ospitata in IIS 6.0 o IIS 7.0, il client viene eseguito con l'account Network Service per impostazione predefinita. Per impostazione predefinita, tutte le associazioni fornite dal sistema, che supportano le sessioni sicure, usano un token contestuale di sicurezza senza stato. Tuttavia, se il client è una pagina ASP.NET e vengono utilizzate sessioni sicure con token contestuali di sicurezza con stato, il client non può essere sostituito. Per altre informazioni sull'uso di token del contesto di sicurezza con stato in una sessione protetta, vedere Procedura: Creare un token di contesto di sicurezza per una sessione sicura.
Per abilitare la rappresentazione di un client da un token di Windows memorizzato nella cache in un servizio
Creare il servizio. Per un'esercitazione di questa procedura di base, vedere Esercitazione introduttiva.
Usare un'associazione che usa l'autenticazione di Windows e crea una sessione, ad esempio NetTcpBinding o WSHttpBinding.
Quando si crea l'implementazione dell'interfaccia del servizio, applicare la OperationBehaviorAttribute classe al metodo che richiede l'impersonificazione del client. Impostare la proprietà Impersonation su Required.
[OperationBehavior(Impersonation=ImpersonationOption.Required)] public double Add(double a, double b) { return a + b; }<OperationBehavior(Impersonation:=ImpersonationOption.Required)> _ Public Function Add(ByVal a As Double, ByVal b As Double) As Double _ Implements ICalculator.Add Return a + b End Function
Per impostare il livello di impersonificazione consentito nel client
Creare il codice client del servizio usando l'strumento di utilità per i metadati di ServiceModel (Svcutil.exe). Per altre informazioni, vedere Accesso ai servizi tramite un client WCF.
Dopo aver creato il client WCF, impostare la AllowedImpersonationLevel proprietà della WindowsClientCredential classe su uno dei TokenImpersonationLevel valori di enumerazione.
Annotazioni
Per usare Delegation, è necessario utilizzare l'autenticazione Kerberos negoziata (talvolta denominata Kerberos a più passaggi o a più fasi). Per una descrizione di come implementare questa funzionalità, vedere Procedure consigliate per la sicurezza.
CalculatorClient client = new CalculatorClient("CalculatorEndpoint"); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;Dim client As New CalculatorClient("CalculatorEndpoint") client.ClientCredentials.Windows.AllowedImpersonationLevel = _ System.Security.Principal.TokenImpersonationLevel.Impersonation