Seguridad de mensaje de Windows
Este ejemplo muestra cómo configurar unWSHttpBinding que enlaza para utilizar la seguridad del nivel de mensaje con autenticación de Windows. Este ejemplo se basa en el Ejemplo de introducció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.
La seguridad predeterminada para wsHttpBinding Element es la seguridad de mensajes mediante la autenticación de Windows. Los archivos de configuración en este ejemplo establecieron explícitamente el atributo mode
de security Element in wsHttpBinding en Message
y el atributo clientCredentialType
a Windows
. Estos valores son los valores predeterminados para este enlace, pero se han configurado explícitamente, como se muestra en la configuración del ejemplo siguiente para mostrar su uso.
<bindings>
<wsHttpBinding>
<binding name="Binding1">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
La configuración de extremo de cliente está compuesta de una dirección absoluta para el extremo de servicio, el enlace y el contrato. El enlace del cliente se configura con el securityMode
adecuado y authenticationMode
.
<configuration>
<system.serviceModel>
<client>
<endpoint address=
"https://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>
</configuration>
El código fuente del servicio se ha modificado para mostrar cómo ServiceSecurityContext se puede utilizar para tener acceso a la identidad del llamador.
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 y respuestas de la operación se muestran en la ventana de la consola del cliente. El primer método llamado - GetCallerIdentity
- devuelve el nombre de la identidad del llamador al cliente. Presione ENTRAR en la ventana de la consola para cerrar el cliente.
Para configurar, generar y ejecutar el ejemplo
Asegúrese de que ha realizado Procedimiento de instalación único para ejemplos de Windows Communication Foundation.
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.
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.
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.