Compartir vía


Seguridad de Mensajes en Windows

En este ejemplo se muestra cómo configurar una WSHttpBinding vinculación para usar la seguridad a nivel de mensaje con la autenticación de Windows. Este ejemplo se basa en la introducción. En este ejemplo, el servicio se hospeda en Internet Information Services (IIS) y el cliente es una aplicación de consola (.exe).

Nota:

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

La seguridad predeterminada para <wsHttpBinding> es la seguridad de mensajes mediante la autenticación de Windows. Los archivos de configuración de este ejemplo establecen explícitamente el atributo mode de la <seguridad> en Message y el atributo clientCredentialType en Windows. Estos valores son los valores predeterminados para este enlace, pero se han configurado explícitamente, como se muestra en la siguiente configuración de ejemplo para demostrar su uso.

<bindings>
    <wsHttpBinding>
        <binding>
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

La configuración del punto de conexión de cliente consta de una dirección absoluta para el punto de conexión de servicio, el enlace y el contrato. El enlace de cliente se configura con los valores adecuados securityMode y authenticationMode.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://localhost/servicemodelsamples/service.svc"
            binding="wsHttpBinding"
            bindingConfiguration="Binding1"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  </client>

  <bindings>
    <wsHttpBinding>
      <!-- The default security for the WSHttpBinding is -->
      <!-- Message security using Windows authentication. -->
      <!-- This configuration explicitly defines the security mode -->
      <!-- as Message and the clientCredentialType as Windows -->
      <!-- for demonstration purposes. -->
      <binding name="Binding1">
        <security mode="Message">
          <message clientCredentialType="Windows"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

El código fuente del servicio se ha modificado para demostrar cómo ServiceSecurityContext se puede usar para acceder a la identidad del autor de la llamada.

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

Al ejecutar el ejemplo, las solicitudes de operación y las respuestas se muestran en la ventana de la consola del cliente. El primer método llamado : GetCallerIdentity devuelve el nombre de la identidad del autor de la llamada al cliente. Presione ENTRAR en la ventana de la consola para apagar el cliente.

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. 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.

  3. 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.