Partager via


Authorizing Access to Service Operations

Cet exemple illustre comment utiliser l'élément <serviceAuthorization> element pour permettre l'utilisation de l'attribut PrincipalPermissionAttribute et ainsi autoriser l'accès aux opérations de service. Il est basé sur l'exemple Getting Started, exemple. Le service et client sont configurés à l'aide de l'élément wsHttpBinding Element. L'attribut mode de Security element a la valeur Message et clientCredentialType a la valeur Windows. L'attribut PrincipalPermissionAttribute est appliqué à chaque méthode de service et utilisé afin de restreindre l'accès à chaque opération. L'appelant doit être un administrateur Windows pour pouvoir accéder à chaque opération.

Dans cet exemple, le client est une application console (.exe) et le service est hébergé par les services IIS (Internet Information Services).

ms752243.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent en fin de rubrique.

Le fichier de configuration de service utilise l'élément <serviceAuthorization> element pour définir l'attribut 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>

Affecter au principlePermissionMode la valeur UseWindowsGroups permet d'utiliser l'attribut PrincipalPermissionAttribute en fonction des noms de groupe Windows.

L'attribut PrincipalPermissionAttribute est appliqué à chaque opération, indiquant que l'appelant doit appartenir à un groupe Administrateurs Windows, tel qu'illustré dans l'exemple de code suivant.

[PrincipalPermission(SecurityAction.Demand, 
                             Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
    double result = n1 + n2;
    return result;
}

Lorsque vous exécutez l'exemple, les demandes et réponses d'opération s'affichent dans la fenêtre de console du client. Le client parvient à communiquer avec chaque opération s'il s'exécute sous un compte appartenant à un groupe Administrateurs. Dans le cas contraire, l'accès aux opérations lui sera refusé. Faites l'expérience de ce genre d'échec en exécutant le client sous un compte n'appartenant pas à un groupe Administrateurs. Appuyez sur ENTER dans la fenêtre de console pour arrêter le client.

Les services peuvent être informés des échecs d'autorisation en implémentant un IErrorHandler. Consultez Extending Control Over Error Handling and Reporting pour plus d'informations sur l'implémentation IErrorHandler.

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure figurant à la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l'édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Génération des exemples Windows Communication Foundation.

  3. Pour exécuter l'exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.