Compartir a través de


Comprender y depurar el flujo de trabajo del agente de autenticación web (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Puedes usar el agente de autenticación web para habilitar el inicio de sesión único (SSO) para tus usuarios y autenticar sin problemas varias aplicaciones de la Tienda Windows en un único servicio. El agente de autenticación web admite los protocolos de autenticación de Internet OAuth y OpenID y, por tanto, puedes integrar la aplicación con un servicio web que proporcione autenticación de usuarios. Esto te permite utilizar en tus aplicaciones las identidades de usuarios de servicios como Facebook, Flickr, Google y Twitter.

Cuando una aplicación llama al agente de autenticación web, se abre un cuadro de diálogo donde se muestran las páginas web necesarias para iniciar sesión. El proveedor del servicio debe permitir que el usuario dé su consentimiento expreso para dicha autenticación, y normalmente incluye una opción "Mantenerme conectado". De igual modo, también debe dejar claro al usuario el modo en que su identidad se va a usar, lo que normalmente se consigue incluyendo un vínculo a una declaración de privacidad en la página de inicio de sesión. Una vez que el usuario completa esos pasos, el cuadro de diálogo desaparece y el usuario continúa con la aplicación.

En el siguiente diagrama se muestra un cuadro de diálogo modal de ejemplo.

Ejemplo de cuadro de diálogo para autenticar al usuario

Beneficios asociados al uso del agente de autenticación web

El agente de autenticación web ofrece reporta los siguientes beneficios:

  • Una interfaz de programación fácil de usar que exime al desarrollador de aplicaciones de tener que hospedar un control de explorador en su propia aplicación.
  • Integración de la página web de un proveedor en una interfaz de usuario de Windows 8. Para obtener más información sobre los proveedores en línea, consulta Agente de autenticación web proveedores en línea.
  • Credenciales de usuario aisladas de la aplicación.
  • Soporte nativo para el inicio de sesión único con proveedores en línea.

Cómo funciona el agente de autenticación web

El agente de autenticación web es el agente o moderador entre tu aplicación y tu servicio de autenticación. Consta de un conjunto de API, un agente y un host web. La aplicación usa las API para comunicarse con el agente. El agente crea un nuevo proceso de host web en un contenedor de aplicación independiente. El agente se comunica con la aplicación, ensambla la interfaz de usuario (UI) y controla el ciclo de vida del host de autenticación web. El host de autenticación web representa las páginas del sitio web del proveedor de autenticación en línea.

El siguiente diagrama muestra el flujo de información con el agente de autenticación web.

Flujo de datos para el agente de autenticación web

El flujo de trabajo típico al usar el agente de autenticación web es el siguiente:

  1. 1. Tu aplicación invoca al agente de autenticación web usando el método WebAuthenticationBroker.AuthenticateAsync. Proporcionas un URI de solicitud inicial y un URI de devolución de llamada para cuando se complete la llamada. Estos se corresponden con un URI de autorización de extremo y un URI de redireccionamiento en el protocolo OAuth 2.0. El protocolo OpenID y versiones anteriores de OAuth tienen conceptos similares.
  2. El agente crea un cuadro de diálogo del sistema que es modal a la aplicación que llama.
  3. El agente selecciona un contenedor de aplicación independiente de la aplicación que llama o de cualquier otra aplicación en el sistema y borra las cookies persistentes. Nota  Este contenedor de aplicación nunca se comparte entre dos aplicaciones simultáneamente, a menos que el agente se haya iniciado en el modo de inicio de sesión único (SSO).  
  4. El agente inicia el host de autenticación web en el contenedor de aplicación seleccionado.
  5. El agente adjunta la ventana del host al cuadro de diálogo que creó anteriormente. La ventana del host es responsable de representar el contenido web.
  6. El host de autenticación web navega al URI de solicitud. Por lo general, se trata de una página de inicio de sesión.
  7. A medida que el usuario interactúa con el sitio web del proveedor en línea y hace clic en vínculos o envía información, el host comprueba cada URI en busca de una coincidencia con un URI de devolución de llamada proporcionado por la aplicación antes de navegar a ellos.
  8. Si se encuentra una coincidencia, el host termina la navegación y se lo indica al agente.
  9. El agente anota el cuadro de diálogo, borra las cookies persistentes creadas por el host del contenedor de aplicación y devuelve los datos de protocolo a la aplicación.

Cómo funciona el inicio de sesión único del agente de autenticación web

El agente de autenticación web habilita el inicio de sesión único (SSO) permitiendo cookies persistentes en un contenedor de aplicación SSO de propósito especial. Para usar este contenedor, tu aplicación puede llamar a la sobrecarga del método AuthenticateAsync que no toma un URI de devolución de llamada. La dirección URL de redireccionamiento inicial debe tener el formato "ms-app://<SID>", donde <SID> coincide con el SID del paquete que llama. Después, puedes registrar el SID de cada una de tus aplicaciones en el servicio de autenticación como una dirección URL de redireccionamiento válida (también denominado "extremo de redireccionamiento").

Por ejemplo, Fabrikam es el desarrollador de una aplicación de la Tienda Windows que usa los servicios de Contoso. En tiempo de desarrollo, Fabrikam registró su aplicación en el Centro de desarrollo de Windows y, como resultado, recibió un SID único. Después, Fabrikam registró los SID de sus aplicaciones como direcciones URL de redireccionamiento válidas en el servicio de autenticación Contoso.com. Fabrikam registró dos de sus SID como direcciones URL de redireccionamiento y una de ellas fue "ms-app://S-1-5-4321".

En tiempo de ejecución, la aplicación de la Tienda Windows de Fabrikam invoca al agente de autenticación web en modo SSO. Como parte del procesamiento de la solicitud, Contoso.com comprueba que la dirección URL de redirección esté en el conjunto de direcciones URL registradas. Después de que Contoso autentique al usuario, redirige a la dirección URL de redireccionamiento solicitada anexando un token de acceso: "ms-app://S-1-5-4321?token=ABC". Cuando el agente de autenticación web encuentra una dirección URL con este formato que coincide con el SID de la aplicación que realiza la llamada, devuelve el token incluido en la cadena de consulta o publica los datos de nuevo en la aplicación.

Si ya se hubieran creado cookies en el contenedor de aplicación SSO, el usuario no tendría que iniciar sesión en Contoso. Si otra aplicación tratara de suplantar la aplicación de Fabrikam, no podría porque Contoso comprobó la identidad de la aplicación asegurándose de que se estaba solicitando una de las direcciones URL de redirección registradas y el agente de autenticación web se aseguró de que solo la aplicación que comparte el mismo SID al que Contoso quiere redirigirse obtiene los datos del protocolo.

Solución de problemas del agente de autenticación web

Hay varias maneras de solucionar los problemas de las API del agente de autenticación para tu aplicación, entre ellas, revisar los registros operativos y revisar las solicitudes web y las respuestas usando Fiddler.

Registros operativos

Con frecuencia, los registros operativos ayudan a determinar qué no está funcionando. Existe un canal de registro de eventos dedicado, Microsoft-Windows-WebAuth\Operational, que permite a los desarrolladores de sitios web comprender cómo el agente de autenticación web procesa sus páginas web. Para habilitarlo, inicia eventvwr.exe y habilita el registro operativo en Registros de aplicaciones y servicios\Microsoft\Windows\WebAuth. Asimismo, el agente de autenticación web anexa una cadena única a la cadena de agente de usuario para identificarse en el servidor web. La cadena es "MSAuthHost/1.0". Ten en cuenta que el número de versión podría cambiar en el futuro, por lo que no debes depender de dicho número de versión en tu código. El siguiente es un ejemplo de la cadena de agente de usuario completa:

User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MSAuthHost/1.0)

Ejemplo de uso de los registros operativos

  1. Habilitar los registros operativos
  2. Ejecuta la aplicación social de ContosoVisor de eventos que muestra los registros operativos WebAuth
  3. Las entradas de los registros generados se pueden usar para comprender el comportamiento del agente de autenticación web con más detalle. En este caso, pueden incluir:
    • Navegación - iniciar: registra cuándo se inicia AuthHost y contiene información sobre las direcciones URL de inicio y terminación.
    • Ilustra los detalles de Inicio de navegación
    • Navegación - completa: registra la finalización de la carga de una página web.
    • Etiqueta meta: registra cuándo se encuentra una etiqueta meta, incluidos los detalles.
    • Navegación - finalizar: navegación terminada por el usuario.
    • Navegación - error: AuthHost encuentra un error de navegación en una dirección URL e incluye HttpStatusCode.
    • Navegación - fin: se ha encontrado la dirección URL de terminación.

Usar Fiddler con el agente de autenticación web

El depurador web Fiddler puede utilizarse con aplicaciones de Windows 8.

  1. Dado que AuthHost se ejecuta en su propio contenedor de aplicaciones para darle la funcionalidad de red privada, debes establecer una clave de registro: Editor del Registro de Windows 5.00

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\authhost.exe\EnablePrivateNetwork = 00000001

    •                      Data type
                           DWORD
  2. Agrega una regla para AuthHost, ya que esto es lo que genera el tráfico saliente.

    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.a.p_8wekyb3d8bbwe
    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso.p_8wekyb3d8bbwe
    CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso.c_8wekyb3d8bbwe
    D:\Windows\System32>CheckNetIsolation.exe LoopbackExempt -s
    List Loopback Exempted AppContainers
    [1] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.sso.c_8wekyb3d8bbwe
        SID:  S-1-15-2-1973105767-3975693666-32999980-3747492175-1074076486-3102532000-500629349
    [2] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.sso.p_8wekyb3d8bbwe
        SID:  S-1-15-2-166260-4150837609-3669066492-3071230600-3743290616-3683681078-2492089544
    [3] -----------------------------------------------------------------
        Name: microsoft.windows.authhost.a.p_8wekyb3d8bbwe
        SID:  S-1-15-2-3506084497-1208594716-3384433646-2514033508-1838198150-1980605558-3480344935
    
  3. Agrega una regla de firewall para el tráfico entrante a Fiddler.

Para obtener más información, consulta el blog sobre cómo usar el depurador web Fiddler con las aplicaciones de la Tienda Windows.

Temas relacionados

Agente de autenticación web para proveedores en línea

Muestra de agente de autenticación web

Windows.Security.Authentication.Web