Compartir a través de


Enlace HTTP de federación de WS 2007

Download sample

Este ejemplo muestra el uso de WS2007FederationHttpBinding, un enlace estándar que puede utilizar para generar escenarios aliados que admiten la versión 1.3 de la especificación WS fiable.

Nota

Para generar y ejecutar este ejemplo, es necesario que esté instalado .NET Framework versión 3.5. Para abrir los archivos de solución y proyecto se necesita Visual Studio 2008.

Nota

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

El ejemplo está compuesto de un programa cliente basado (Client.exe) en consola, un programa de servicio del testigo de seguridad basado (Securitytokenservice.exe) en consola y un programa de servicio basado (Service.exe) en consola. El servicio implementa un contrato que define un modelo de comunicación de solicitud/respuesta. La interfaz ICalculator, que expone las operaciones matemáticas (Add, Subtract, Multiplyy Divide) define el contrato. El cliente obtiene un testigo de seguridad del Servicio de símbolo de seguridad (STS) y realiza las solicitudes sincrónicas al servicio para una operación matemática determinada. El servicio responde a continuación con el resultado. La actividad del cliente es visible en la ventana de la consola.

El ejemplo expone el contrato ICalculator mediante el elemento ws2007FederationHttpBinding. La configuración de este enlace en el cliente se muestra en el código siguiente.

    <bindings>
      <ws2007FederationHttpBinding>
        <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" >
              <!-- Endpoint address and binding for Security Token Service -->
              <issuer address ="https://localhost:8000/sts/windows" 
                      binding ="ws2007HttpBinding" />              
            </message>
          </security>
        </binding>
      </ws2007FederationHttpBinding>
    </bindings>

En <security> element of <ws2007FederationHttpBinding>, el valor security especifica qué modo de seguridad debería utilizarse. En este ejemplo, la seguridad de message se utiliza, que es por lo que <message> element of <ws2007FederationHttpBinding> se especifica dentro de <security> element. El elemento <issuer> dentro de <message> element of <ws2007FederationHttpBinding> especifica la dirección y el enlace para STS que emite un testigo de seguridad al cliente para que el cliente pueda autenticar al servicio ICalculator.

La configuración de este enlace en el servicio se muestra en el código siguiente.

    <bindings>
      <ws2007FederationHttpBinding>
        <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" >
              <!-- Metadata address for Security Token Service -->
              <issuerMetadata address ="https://localhost:8000/sts/mex" >
                <identity>
                  <certificateReference storeLocation ="CurrentUser" 
                                        storeName="TrustedPeople" 
                                        x509FindType ="FindBySubjectDistinguishedName" 
                                        findValue ="CN=STS" />
                </identity>
              </issuerMetadata>
            </message>
          </security>
        </binding>
      </ws2007FederationHttpBinding>
    </bindings>

En <security> element of <ws2007FederationHttpBinding>, el valor security especifica qué modo de seguridad debería utilizarse. En este ejemplo, la seguridad de message se utiliza, que es por lo que <message> element of <ws2007FederationHttpBinding> se especifica dentro de <security> element. El elemento <issuerMetadata> de ws2007FederationHttpBinding dentro de <message> element of <ws2007FederationHttpBinding> 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.

    <behaviors>
      <serviceBehaviors>
        <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>
      </serviceBehaviors>
    </behaviors>

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

STS expone un extremo único mediante el estándar WS2007HttpBinding. El servicio responde a las solicitudes de los clientes para los tokens. Si el cliente se autentica utilizando una cuenta de Windows, el servicio emite un token que contiene el nombre de usuario del cliente como una demanda. Como parte de la creación del token, el STS firma el token 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 token al cliente, el STS devuelve también la clave simétrica. El cliente presenta el token emitido al servicio ICalculator y demuestra que conoce la clave simétrica firmando el mensaje con esa clave.

Al ejecutar el ejemplo, la solicitud para el token 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 del 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.

El archivo Setup.bat incluido con este ejemplo le permite configurar el servidor y el STS con los certificados pertinentes para ejecutan una aplicación hospedada por sí misma. 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 STS lo utiliza para firmar los testigos de seguridad que emite al cliente. El segundo certificado tiene un nombre sujeto de CN=localhost y el STS lo utiliza para cifrar en cierto modo una clave que el servicio puede descifrar.

Para configurar, generar y ejecutar el ejemplo

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

  2. Ejecute el archivo Setup. bat para crear los certificados necesarios. (Nota: En Windows Vista, haga clic con el botón secundario en Setup.bat, a continuación, haga clic en Ejecutar como administrador). Este archivo por lotes utiliza Certmgr.exe y Makecert.exe, que se distribuyen con la Windows SDK. Sin embargo, debe ejecutar Setup.bat desde dentro de un símbolo de sistema de Visual Studio Tools para permitir al script buscar estas herramientas.

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

  4. Para ejecutar el ejemplo en una configuración con un único equipo o con varios, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation. Si está utilizando Windows Vista, debe ejecutar Service.exe, Client.exe y SecurityTokenService.exe con privilegios elevados (haga clic con el botón secundario en los archivos y, a continuación, haga clic en Ejecutar como administrador).

Consulte también

Otros recursos

Enlace HTTP de federación de WS

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.