Autorización de acceso a operaciones de servicio

Download sample

Este ejemplo muestra cómo utilizar <serviceAuthorization> element para habilitar el uso del atributo PrincipalPermissionAttributepara autorizar el acceso a las operaciones de servicio. Este ejemplo se basa en el ejemplo Ejemplo de introducción. El servicio y cliente se configuran utilizando wsHttpBinding Element. El atributo mode de Security element se ha definido en Message y clientCredentialType se ha establecido en Windows. PrincipalPermissionAttribute se aplica a cada método de servicio y restringe el acceso a cada operación. El llamador debe ser un administrador de Windows para tener acceso a cada operación.

En este ejemplo, el cliente es una aplicación de consola (.exe) y los Servicios de Internet Information Server (IIS) hospedan el servicio.

Nota

Las instrucciones de compilación y el procedimiento de instalación de este ejemplo se encuentran al final de este tema.

El archivo de configuración de servicio utiliza <serviceAuthorization> element para establecer el atributo 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>

Establecer principlePermissionMode en UseWindowsGroups habilita el uso de PrincipalPermissionAttribute basado en nombres del grupo de Windows.

PrincipalPermissionAttribute se aplica a cada operación para exigir al llamador que forme parte del grupo administrador de Windows, como se muestra en el código muestra siguiente.

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

Al ejecutar el ejemplo, las solicitudes y respuestas de la operación se muestran en la ventana de la consola del cliente. El cliente comunica correctamente con cada operación si se está ejecutando bajo una cuenta que forme parte del grupo de administradores; de lo contrario, se deniega el acceso. Para experimentar con error de autorización, ejecute el cliente en una cuenta que no forme parte del grupo de administradores. Presione ENTRAR en la ventana de la consola para cerrar el cliente.

Se puede notificar un servicio de los errores de autorización implementando IErrorHandler. vea Extensión de control a control de errores y creación de informes para obtener más información sobre la implementación de IErrorHandler.

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  3. Para ejecutar el ejemplo en una configuración de equipos única o cruzada, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.