Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra cómo utilizar <serviceAuthorization> para habilitar el uso del atributo PrincipalPermissionAttribute para autorizar el acceso a las operaciones de servicio. Este ejemplo se basa en el ejemplo introducción . El servicio y el <cliente se configuran mediante wsHttpBinding>. El atributo mode
de <seguridad> se ha establecido en Message
y clientCredentialType
se ha establecido en Windows
.
PrincipalPermissionAttribute se aplica a cada método de servicio y se usa para restringir el acceso a cada operación. El autor de la llamada debe ser un administrador de Windows para acceder 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:
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.
El archivo de configuración del servicio usa serviceAuthorization<> para establecer el principalPermissionMode
atributo :
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 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>
Configurar el principalPermissionMode
en UseWindowsGroups
habilita el uso de PrincipalPermissionAttribute basado en los nombres de grupo de Windows.
PrincipalPermissionAttribute se aplica a cada operación para requerir que el autor de la llamada forme parte del grupo administradores de Windows, como se muestra en el código de ejemplo 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 de operación y las respuestas se muestran en la ventana de la consola del cliente. El cliente se comunica correctamente con cada operación si se ejecuta en una cuenta que forma parte del grupo Administradores; De lo contrario, se deniega el acceso. Para experimentar con un error de autorización, ejecute el cliente en una cuenta que no forme parte del grupo Administradores. Presione ENTRAR en la ventana de la consola para apagar el cliente.
Un servicio puede ser notificado de errores de autorización mediante la implementación de un IErrorHandler. Vea Extender el control sobre los errores y los informes para conocer cómo implementar IErrorHandler
.
Para configurar, compilar y ejecutar el ejemplo
Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.
Para ejecutar el ejemplo en una configuración con un solo equipo o con varios, siga las instrucciones que se indican en Ejecución de los ejemplos de Windows Communication Foundation.