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 su 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 sicurezza 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 sicurezza senza stato per impostazione predefinita. Se , tuttavia, il client è una pagina ASP.NET e si utilizzano sessioni protette con token del contesto di sicurezza con stato, non è possibile eseguire la rappresentazione del client. Per ulteriori informazioni su sull'utilizzo 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 consentire la rappresentazione di un client da un token di Windows memorizzato nella cache in un servizio
Creare il servizio. Per un'esercitazione su questa procedura di base, vedere Esercitazione introduttiva.
Utilizzare un'associazione che utilizza l'autenticazione di Windows e che crea una sessione, ad esempio NetTcpBinding o WSHttpBinding.
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.
<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
[OperationBehavior(Impersonation=ImpersonationOption.Required)] public double Add(double a, double b) { return a + b; }
Per impostare il livello di rappresentazione consentito nel client
Creare un codice per client di servizi tramite Strumento ServiceModel Metadata Utility Tool (Svcutil.exe). Per ulteriori informazioni, vedere Accesso ai servizi tramite client WCF.
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. Dim client As New CalculatorClient("CalculatorEndpoint") client.ClientCredentials.Windows.AllowedImpersonationLevel = _ System.Security.Principal.TokenImpersonationLevel.Impersonation
CalculatorClient client = new CalculatorClient("CalculatorEndpoint"); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
Vedere anche
Attività
Riferimento
OperationBehaviorAttribute
TokenImpersonationLevel