Cómo: Usar una dirección URL de error para el control de errores personalizado
Actualizado: 19 de junio de 2015
Se aplica a: Azure
Se aplica a
- Active Directory Access Control de Microsoft Azure (también conocido como Access Control Service o ACS)
Resumen
En este tema se explica cómo usar la característica URL del error para implementar el control de errores de inicio de sesión personalizado en una aplicación de usuario de confianza. Una dirección URL de error permite enviar errores que ACS genera de nuevo a la aplicación de usuario de confianza para que la aplicación pueda registrar y responder a errores. Por ejemplo, los sitios web de ASP.NET pueden usar la característica URL del error para presentar mensajes de error a los usuarios finales con el mismo aspecto que el sitio web.
Contenido
Objetivos
Información general
Resumen de pasos
Paso 1: Habilitar la característica de URL del error
Paso 2: Crear las clases del asistente de error
Paso 3:Procesar un mensaje de error codificado en JSON
Paso 4: Configurar el acceso anónimo a la página de error
Paso 5: Prueba del trabajo
Objetivos
Identificar la configuración necesaria para usar la característica URL del error.
Identifique el código auxiliar necesario para procesar los mensajes de error de ACS.
Identificar y solucionar problemas potenciales.
Información general
Una dirección URL de error especifica la dirección web a la que ACS redirige a los usuarios si se produce un error durante el proceso de inicio de sesión. El destino de la URL del error normalmente es una página de error personalizada que se hospeda en la aplicación del usuario de confianza. Como parte del redireccionamiento, ACS devuelve información sobre el error a la aplicación de usuario de confianza como un parámetro de dirección URL HTTP con codificación JSON. Puede incluir la información de error codificada en JSON en la página de error personalizada o mostrar texto de ayuda estático. El siguiente es un ejemplo de un mensaje de error codificado en JSON.
{"context":null,"httpReturnCode":401,"identityProvider":"Google","timeStamp":"2010-12-17 21:01:36Z","traceId":"16bba464-03b9-48c6-a248-9d16747b1515","errors":[{"errorCode":"ACS30000","errorMessage":"Error al procesar una respuesta de inicio de sesión de OpenID."},{"errorCode":"ACS50019","errorMessage":"El usuario canceló el inicio de sesión."}]}
Resumen de pasos
Use el proceso siguiente para controlar los mensajes de error de ACS:
Paso 1: Habilitar la característica de URL del error
Paso 2: Crear las clases del asistente de error
Paso 3:Procesar un mensaje de error codificado en JSON
Paso 4: Configurar el acceso anónimo a la página de error
Paso 5: Prueba del trabajo
Paso 1: Habilitar la característica de URL del error
Para habilitar la característica URL del error para el usuario de confianza
Vaya al Portal de administración de Microsoft Azure (https://manage.WindowsAzure.com), inicie sesión y, a continuación, haga clic en Active Directory. (Sugerencia de solución de problemas: falta el elemento "Active Directory" o no está disponible)
Para administrar el espacio de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar. (O haga clic en espacios de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar.)
Haga clic en Aplicaciones de usuarios de confianza y seleccione una aplicación del usuario de confianza.
En la página Editar aplicación de usuario de confianza, escriba la URL de la página de error en el campo URL del error.
ACS redirige al usuario a esta página cuando se producen errores de inicio de sesión. Además, ACS envía parámetros codificados con dirección URL JSON a esta página que incluyen los detalles del error.
Paso 2: Crear las clases del asistente de error
En este paso se crean clases del asistente de error que deserializan los mensajes de error codificados en JSON.
Para crear clases del asistente de error
Agregue un archivo de clase a la aplicación web y asígnele un nombre, como Error.cs.
Implemente la clase Error como sigue.
public class Error { public string errorCode { get; set; } public string errorMessage { get; set; } }
Agregue otro archivo de clase y asígnele un nombre, como ErrorDetails.cs.
Implemente la clase ErrorDetails como sigue.
public class ErrorDetails { public string context { get; set; } public int httpReturnCode { get; set; } public string identityProvider { get; set; } public Error[] errors { get; set; } }
Estas clases se usarán en el paso siguiente al procesar mensajes de error de ACS.
Paso 3:Procesar un mensaje de error codificado en JSON
En este paso se muestra cómo procesar mensajes de error codificados en JSON que ACS genera.
Para procesar un mensaje de error codificado en JSON generado por ACS
Agregue una página web ASPX a la aplicación ASP.NET y asígnele un nombre, como ErrorPage.aspx.
Agregue los siguientes controles de etiquetas para el marcado ASP.NET.
<asp:Label ID="lblIdntityProvider" runat="server"></asp:Label> <asp:Label ID="lblErrorMessage" runat="server"></asp:Label>
Cambie al archivo de código subyacente de la página, ErrorPge.aspx.cs.
Agregue las declaraciones siguientes a la parte superior.
using System.Web.Script.Serialization;
Agregue el código siguiente al método Page_Load.
JavaScriptSerializer serializer = new JavaScriptSerializer(); ErrorDetails error = serializer.Deserialize<ErrorDetails>( Request["ErrorDetails"] ); lblErrorMessage.Text = string.Join("<br/>", error.errors.Select(er => string.Format("Error Code {0}: {1}", er.errorCode, er.errorMessage)).ToArray());
Este código procesa mensajes de error codificados en JSON desde ACS.
Paso 4: Configurar el acceso anónimo a la página de error
Este paso configura el acceso anónimo para el archivo ErrorPage.aspx. Si la página está protegida y requiere autorización, se produce un bucle de redirección infinito. Si esto ocurre cuando ACS intenta acceder a la página, ACS envía un error codificado en JSON.
Nota
Puesto que es posible tener acceso anónimo a la página de error y puesto que puede incluir código eco de HTML o escribir datos en la base de datos, debe tomar las medidas necesarias para evitar los ataques de escritura de script entre sitios y de inyección de código SQL. Los siguientes recursos describen esto con más detalle:
-
Cómo: Evitar el scripting entre sitios en ASP.NET (https://go.microsoft.com/fwlink/?LinkID=178708).
-
Protección contra ataques por inyección en ASP.NET (https://go.microsoft.com/fwlink/?LinkID=157572).
-
Protección contra la inyección de SQL en ASP.NEThttps://go.microsoft.com/fwlink/?LinkID=212978.
Para configurar acceso anónimo a la página de error
Abra el archivo web.config de la aplicación y agregue la siguiente entrada.
<location path="ErrorPage.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
Esto garantiza que el acceso a la página no provoca un bucle de redirección infinito.
Paso 5: Prueba del trabajo
Este paso comprueba la configuración e implementación de la URL del error.
Para habilitar la característica URL del error para el usuario de confianza
Vaya al Portal de administración de Microsoft Azure (https://manage.WindowsAzure.com), inicie sesión y, a continuación, haga clic en Active Directory. (Sugerencia de solución de problemas: falta el elemento "Active Directory" o no está disponible)
Para administrar el espacio de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar. (O haga clic en espacios de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar.)
Haga clic en Grupos de reglas y, luego, haga clic en un grupo de reglas que está asociado a la aplicación del usuario de confianza.
-
Advertencia
El paso siguiente no se puede deshacer. Sin embargo, si va a eliminar reglas generadas, se pueden volver a generar fácilmente más adelante.
En la página Editar grupo de reglas, seleccione todas las reglas de la sección Reglas y, luego, haga clic en Eliminar las reglas seleccionadas.
Haga clic en Save(Guardar).
Vuelva a su sitio web y navegue hasta una de las páginas mediante el explorador.
Debe redirigirse a su proveedor de identidades para la autenticación( Windows Live ID (cuenta de Microsoft), Google, Facebook, Yahoo!, o —lo que esté configurado para su usuario de confianza como proveedor de identidades.
Después de la autenticación correcta, debe redirigirse de nuevo a ACS, que debe generar un error, ya que no hay ninguna regla definida.
Este error debe mostrarse en la página de error que creó en el paso 2: Crear clases auxiliares de error y será similar a la siguiente:
uri:WindowsLiveID Código de error ACS50000: Error al emitir un token.
Otra manera de probar esto es denegar el consentimiento del usuario. Esto se presenta al iniciar la sesión con Facebook o Google.