Autorizzazione dell'accesso alle operazioni del servizio
In questo esempio viene illustrato come utilizzare l'elemento <serviceAuthorization> element per abilitare l'utilizzo dell'attributo PrincipalPermissionAttribute per autorizzare l'accesso alle operazioni del servizio. L'esempio è basato sull'esempio Esempio della guida introduttiva. Il servizio e il client sono stati configurati utilizzando wsHttpBinding Element. L'attributo mode di Security element è stato impostato su Message e clientCredentialType è stato impostato su Windows. PrincipalPermissionAttribute viene applicato a ogni metodo del servizio e utilizzato per limitare l'accesso alle operazioni. Il chiamante deve essere un amministratore Windows per accedere a tutte le operazioni.
In questo esempio, il client è un'applicazione console (.exe) e il servizio è ospitato da Internet Information Services (IIS).
Nota
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine dell'argomento.
Il file di configurazione del servizio utilizza <serviceAuthorization> element per impostare l'attributo principalPermissionMode :
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
...
<!-- The serviceAuthorization behavior sets the principalPermissionMode to UseWindowsGroups.
This puts a WindowsPrincipal on the current thread when a service is invoked. -->
<serviceAuthorization principalPermissionMode="UseWindowsGroups" />
</behavior>
</serviceBehaviors>
</behaviors>
L'impostazione della principlePermissionMode su UseWindowsGroups abilita l'utilizzo di PrincipalPermissionAttribute basato sui nomi dei gruppi di Windows.
PrincipalPermissionAttribute viene applicato a ogni operazione per richiedere che il chiamante sia parte del gruppo degli amministratori Windows, come illustrato nell'esempio di codice seguente.
[PrincipalPermission(SecurityAction.Demand,
Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Il client comunica correttamente con ogni operazione se viene eseguito in un account che fa parte del gruppo di amministratori. In caso contrario, l'accesso viene negato. Per sperimentare un errore di autorizzazione, eseguire il client in un account che non fa parte del gruppo di amministratori. Premere INVIO nella finestra della console per arrestare il client.
Un servizio può ricevere una notifica di errori di autorizzazione implementando un IErrorHandler. Vedere Estensione del controllo sulla gestione e sulla segnalazione degli errori per informazioni sull'implementazione di IErrorHandler
.
Per impostare, compilare ed eseguire l'esempio
Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.
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.