Esta documentación está archivada y no tiene mantenimiento.

Implementación de aplicaciones y servicios federados de ACS en Azure

Actualizado: junio de 2015

  • Active Directory Access Control de Microsoft Azure (también conocido como Access Control Service o ACS)

  • Windows Identity Foundation (WIF)

  • Microsoft Azure

Este tema consolida las directrices que deben tenerse en cuenta al desarrollar aplicaciones y servicios que usen ACS y que se implementarán en Azure.

  1. Solucionar los problemas de puertos generados de forma dinámica con el emulador de proceso.

  2. Implementar Windows Identity Foundation (WIF) en tiempo de ejecución en Azure.

  3. Cifrar cookies mediante RSA.

  4. Configurar ensamblados invocados mediante reflexión para implementarlos en Azure.

Esta sección es importante al crear aplicaciones web. No es importante si crea servicios web. El emulador de proceso forma parte de las herramientas del SDK de Azure. Puede usarlo para ejecutar, probar, depurar y ajustar la aplicación antes de implementarla como un servicio hospedado en Azure. En el emulador de proceso no es posible asignar una dirección IP única. El emulador de proceso intenta asignar el puerto solicitado. Si el puerto no está disponible, asignará el mejor número de puerto disponible siguiente. Esto quiere decir que, en el emulador de proceso, el servicio puede estar asignado a un número de puerto distinto del número de puerto que especificó en el archivo de definición. Para obtener más información sobre el emulador de proceso, consulte Información general sobre el emulador de proceso de Microsoft Azure (http://go.microsoft.com/fwlink/?LinkId=221212).

Si el emulador de proceso asigna una dirección IP distinta de la dirección IP que se configuró como la URL de retorno en el Portal de administración de ACS, ACS redirigirá las solicitudes autenticadas a la URL que se configuró en el campo URL de retorno de la configuración del usuario de confianza, pero no existirá una página que coincida en esta URL. Como resultado, verá una página en blanco.

Para solucionar este comportamiento, configure el puerto público del extremo de la aplicación web en la nube en un puerto que esté disponible en el equipo. De esta forma, el emulador de proceso no asignará un puerto aleatorio para evitar una colisión.

  1. Para abrir el símbolo del sistema, haga clic en Inicio, escriba cmd y, después, presione Entrar.

  2. Ejecute el comando siguiente para mostrar la lista de direcciones IP del host local con puertos en uso: netstat –a –n | findstr 127.0.0.1

  3. Busque en la lista un puerto que no esté en uso actualmente. Usará este puerto en los pasos siguientes.

  4. En el Explorador de soluciones, haga doble clic en su rol, que se encuentra en la carpeta Roles del proyecto de nube. Se abrirá la página de propiedades del rol.

  5. En la página Propiedades de rol web, haga clic en la pestaña Extremos.

  6. En el archivo Puerto público, especifique el valor del puerto que identificó en el paso 3.

  7. Presione Ctrl+S para guardar los cambios realizados.

Windows Identity Foundation (WIF) es un motor en tiempo de ejecución fuera de banda que debe instalarse en el equipo para que la aplicación para notificaciones pueda usarlo. WIF no está instalado de manera predeterminada en las instancias de Azure. Para ejecutar la aplicación para notificaciones en la nube deberá hacer que WIF en tiempo de ejecución esté disponible en la instancia de Azure. La forma más fácil de hacerlo es incluir el ensamblado de WIF con el paquete de implementación.

  1. En el Explorador de soluciones, busque la aplicación para notificaciones.

  2. Expanda la carpeta Referencias.

  3. Busque el ensamblado Microsoft.IdentityModel en la carpeta Referencias.

  4. Haga clic con el botón derecho en el ensamblado y, después, haga clic en Propiedades.

  5. En la ventana Propiedades, especifique Copiar en local como Verdadero y Versión específica como Falso.

Esta sección es importante al crear aplicaciones web. De manera predeterminada, WIF protege las cookies de forma criptográfica con interfaces de programación de aplicaciones de protección de datos (DPAPI). DPAPI no está disponible en Azure. Para comprobar que la aplicación web compatible con notificaciones en la nube funciona correctamente cuando se implementa en Azure, primero debe agregar la función de cifrado de cookies mediante RSA.

  1. En el Explorador de soluciones, busque la aplicación web compatible con notificaciones en la nube.

  2. Abra el archivo global.asax.cs, que es el código del archivo global.asax, en el editor de Visual Studio.

  3. Agregue las declaraciones siguientes:

    using Microsoft.IdentityModel.Tokens;
    using Microsoft.IdentityModel.Web;
    using Microsoft.IdentityModel.Web.Configuration;
    
  4. Agregue el código siguiente:

    void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
    {
        //
        // Use the <serviceCertificate> to protect the cookies that are
        // sent to the client.
        //
        List<CookieTransform> sessionTransforms =
            new List<CookieTransform>(new CookieTransform[] {
            new DeflateCookieTransform(), 
            new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
            new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate)  });
        SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
        e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
    }
    
    void Application_Start(object sender, EventArgs e)
    {
        FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
    
    noteNota
    Si ya agregó el controlador de eventos Application_Start, puede actualizarlo para incluir este código.

  5. Guarde los cambios realizados.

En algunos casos, los ensamblados se invocan mediante reflexión (por ejemplo, al implementar servicios WCF de REST o módulos HTTP que inspeccionan tokens SWT). Para comprobar que estos ensamblados se implementan en Azure, debe realizar pasos adicionales para agregarlos al paquete de implementación.

  1. Expanda la carpeta bin de la aplicación o servicio web compatible con notificaciones en la nube.

  2. Haga clic con el botón secundario en el ensamblado y, después, haga clic en Incluir en el proyecto.

  3. Haga clic con el botón derecho en la misma biblioteca y, después, haga clic en Propiedades.

  4. En la ventana Propiedades, haga clic en Copiar si es posterior para Copiar en el directorio de salida.

Vea también

Mostrar: