Compartir a través de


Enlace HTTP de federación de WS

Download sample

Este ejemplo muestra cómo implementar un servicio aliado típico, el servicio del testigo de seguridad y un cliente correspondiente mediante Windows Communication Foundation (WCF). Este ejemplo está compuesto de un programa de consola de cliente (client.exe), un programa de consola de servicio de testigo de seguridad (Securitytokenservice.exe) y un programa de consola de servicio (Service.exe). El servicio implementa un contrato que define un modelo de comunicación de solicitud y respuesta. La interfaz ICalculator, que expone las operaciones matemáticas (sumar, restar, multiplicar y dividir), define el contrato. El cliente obtiene un testigo de seguridad del servicio de testigos de seguridad (STS) y realiza las solicitudes sincrónicas al servicio para una operación matemática determinada y el servicio responde con el resultado. La actividad del cliente es visible en la ventana de la consola.

Para obtener más información acerca de este enlace, vea How to: Create a WSFederationHttpBindingy How to: Configure Credentials on a Federation Service.

Nota

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

Este ejemplo expone el contrato ICalculator mediante wsFederationHttpBinding Element. La siguiente configuración de este enlace está en el cliente.

<bindings>
  <wsFederationHttpBinding>
    <binding name="ServiceFed" >
      <security mode ="Message">
        <message issuedKeyType ="SymmetricKey" 
                 issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
          <issuer address ="https://localhost:8000/sts/windows" 
                  binding ="wsHttpBinding" />
        </message>
      </security>
    </binding>
  </wsFederationHttpBinding>
</bindings>

En security element of wsFederationHttpBinding, el valor security mode configura qué modo de seguridad debería utilizarse. En este ejemplo, se utiliza la seguridad de los mensajes, que es por lo que se especifica message element of wsFederationHttpBinding dentro de security element of wsFederationHttpBinding. El elemento de wsFederationHttpBinding <issuer> dentro del message element of wsFederationHttpBinding especifica la dirección y el enlace para el STS que emite un testigo de seguridad para el cliente, de manera que el cliente pueda autenticarlo con el servicio de calculadora.

La siguiente configuración de este enlace está en el servicio.

<bindings>
  <wsFederationHttpBinding>
    <binding name="ServiceFed" >
      <security mode ="Message">
        <message issuedKeyType ="SymmetricKey" 
                 issuedTokenType =
"http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
          <issuerMetadata address ="https://localhost:8000/sts/mex" >
            <identity>
              <certificateReference storeLocation ="CurrentUser"
                     storeName="TrustedPeople"
                     x509FindType ="FindBySubjectNameDistinguisedName" 
                     findValue ="CN=STS"/>
            </identity>
          </issuerMetadata>
        </message>
      </security>
    </binding>
  </wsFederationHttpBinding>
</bindings>

En security element of wsFederationHttpBinding, el valor security mode configura qué modo de seguridad debería utilizarse. En este ejemplo, se utiliza la seguridad de los mensajes, que es por lo que se especifica <message> element of wsFederationHttpBinding dentro de security element of wsFederationHttpBinding. El elemento <issuerMetadata> de wsFederationHttpBinding dentro de <message> element of wsFederationHttpBinding especifica la dirección e identidad para un extremo que se puede utilizar para recuperar los metadatos para STS.

El comportamiento para el servicio se muestra en el código siguiente.

<behavior name ="ServiceBehaviour" >
  <serviceDebug includeExceptionDetailInFaults ="true"/>
  <serviceMetadata httpGetEnabled ="true"/>
  <serviceCredentials>
    <issuedTokenAuthentication>
      <knownCertificates>
        <add storeLocation ="LocalMachine"
             storeName="TrustedPeople"
             x509FindType="FindBySubjectDistinguishedName"
             findValue="CN=STS" />
      </knownCertificates>
    </issuedTokenAuthentication>
    <serviceCertificate storeLocation ="LocalMachine"
                        storeName ="My"
                        x509FindType ="FindBySubjectDistinguishedName"
                        findValue ="CN=localhost"/>
  </serviceCredentials>
</behavior>

<issuedTokenAuthentication> of <serviceCredentials> permite al servicio especificar las restricciones en los tokens que permite presentar a los clientes durante la autenticación. Esta configuración especifica que el servicio acepta los tokens firmados por un certificado cuyo nombre de asunto sea CN=STS.

El STS expone un extremo único mediante el estándar wsHttpBinding. El STS responde para solicitar testigos de los clientes y, siempre que el cliente se autentica utilizando una cuenta de Windows, emite un testigo que contiene el nombre de usuario del cliente como una notificación en el testigo emitido. Como parte de la creación del testigo, el STS firma el testigo usando la clave privada asociada con el certificado de CN=STS. Además, crea una clave simétrica y la cifra utilizando la clave pública asociada con el certificado de CN=localhost. Para devolver el testigo al cliente, el STS devuelve también la clave simétrica. El cliente presenta el testigo emitido al servicio de la calculadora y demuestra que conoce la clave simétrica firmando el mensaje con esa clave.

Ejecutar el ejemplo

Consulte las instrucciones siguientes para ejecutar el ejemplo. Al ejecutar el ejemplo, la solicitud para el testigo de seguridad se muestra en la ventana de la consola del STS. Las solicitudes y respuestas de la operación se muestran en las ventanas de la consola del cliente y el servicio. Presione ENTRAR en cualquiera de las ventanas de la consola para cerrar la aplicación.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Instalar el archivo por lotes

El archivo por lotes de Setup.cmd incluido con este ejemplo le permite configurar el servidor y el servicio del testigo de seguridad (STS) con certificados pertinentes para ejecutar una aplicación hospedada en sí mísma. El archivo por lotes crea dos certificados en el almacén de certificados LocalMachine /TrustedPeople. El primer certificado tiene un nombre sujeto de CN=STS y el STS lo utiliza para firmar los testigos de seguridad que emite para el cliente. El segundo certificado tiene un nombre sujeto de CN=localhost y es utilizado por el STS para cifrar un secreto de tal modo que el servicio pueda descifrarlo.

Para configurar, generar y ejecutar el ejemplo

  1. Ejecute el archivo Setup.cmd para crear los certificados necesarios.

  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. Asegúrese de que todos los proyectos en la solución están generados (compartido, RSTRSTR, servicio, SecurityTokenService y cliente).

  3. Asegúrese de que Service.exe y SecurityTokenService.exe se están ejecutando.

  4. Ejecute Client.exe.

Consulte también

Otros recursos

Enlace HTTP de federación de WS 2007

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.