AD FS error v2.0: MSIS7042: La misma sesión del navegador cliente ha hecho '6' solicitudes en los últimos segundos '1'

StackOverflow https://stackoverflow.com/questions/2640030

Pregunta

gente,   Tengo una aplicación ASP.NET MVC que yo estoy tratando de asegurar el uso de la versión Release Candidate de AD FS v2.0 (Ginebra). He configurado la aplicación como una relación de confianza, y he utilizado Fedutil.exe modificar Web.config de la aplicación para que tenga la información sobre el servidor de Ginebra y utiliza el servidor de Ginebra como fuente de reclamaciones.

Sin embargo, cuando intento y golpear la aplicación MVC, redirecciona a Ginebra, que luego (después de advertirme sobre certs de firma propia) me vuelve a dirigir a la aplicación MVC nuevo. Después de aceptar ambos advertencias cert auto-firmados, los dos servidores juegan ping-pong entre sí en un bucle de redireccionamiento infinito hasta que finalmente Ginebra arroga el mensaje siguiente:

La misma sesión del navegador cliente ha hecho '6' solicitudes en los últimos segundos '1'. Podría haber una posible configuración malo. Contacto con el administrador para obtener más información.

No hay errores en los registros de eventos en el lado MVC o sobre Ginebra, excepto para un evento que contiene el mensaje anterior. Si alguien me pudiera dar alguna información sobre cómo tratar y depurar, diagnosticar, y es de esperar solucionar este problema, estaría eternamente agradecido.

Una vez más, el cuadro de Ginebra es el candidato de versión v2.0 AD FS y el sitio ASP.NET MVC fue construido utilizando la última (finales del '09) versión de la Fundación SDK de Windows Identidad con Web.config modificado usando FedUtil.exe de el SDK WIF.


Así que todos ustedes conseguir un retroceso de esto ... He intentado esta misma aplicación desde Firefox y ... funciona. Consigo incitado por mis credenciales de dominio, los ADFS v2 servidor me re-dirige una vez y luego termino en la página principal de mi solicitud, con mi nombre de cuenta y saludo personalizado. Así que ahora el verdadero problema es la siguiente: ¿Por qué demonios se IE8 quedar atrapado en un bucle de redireccionamiento infinito y Firefox NO ES ?? Después de las pruebas aún más, he sido capaz de conseguir este trabajo escenario, fuera de la caja, sin modificación de cualquiera de la tubería de material por defecto de ADFS v2 (RC) o de WIF (RTW) en ambos Safari y Firefox. IE8 es el navegador sólo para exhibir cualquier manejo problema con este escenario de autenticación. Lo he intentado todo, incluyendo la instalación y confiar en los certs de firma propia, la adición de los sitios a mi zona de intranet local y dejando caer de seguridad a baja e incluso establecer primero y cookies de terceros para permitir siempre.

¿Fue útil?

Solución 2

Resulta que el nombre de host de la parte que confía tenía un guión en él (khoffman_2). Al parecer, el subrayado es un carácter ilegal y DNS es decir, sólo rechazará la información con el guión bajo en ella.

Me cambió el nombre de mi máquina khoffman_2 a khoffman2 y la v2 AD FS / MVC depender combinación partido funciona sin problemas en Firefox, Safari e IE.

Otros consejos

Yo tenía el mismo problema con AD FS 1.0 Y para resolverlo, he asegurado de que la URL tenía una barra inclinada detrás "/" que siempre trabajo en Firefox, así como IE

por ejemplo: https://somedomain.com/Application_2/

Si bien esto no es su problema, hemos tenido problemas idénticos a lo que usted describe. Nuestra solución fue:

  1. Activado autenticación básica en IIS (esto nada resuelto, pero se requiere para los próximos 2 pasos)
  2. Desactivar la autenticación de Windows en IIS (esto resuelve el problema para algunos navegadores IE pero no todos)
  3. Desactivar acceso anónimo en IIS (esto resuelve el problema para el resto de los navegadores IE)

La respuesta de Jaxidian está cerca.

En mi caso yo sólo tenía que:

  • Autenticación de Windows -> desactivado

  • Anónimo autenticación -> Activado

  • suplantación de ASP.NET -> desactivado

  • Formas de autenticación -> desactivado

  • Windows autenticación -> desactivado

Este bucle puede ocurrir cuando un usuario no está autorizado a acceder a una página.

tenía un atributo de autorización personalizado en nuestro controlador MVC que comprueba si el usuario estaba en un papel sobre la base de los créditos prevista si la instalación de UseADFS era cierto en los archivos de configuración. Pensé que este ajuste se establece en true y se confundió que seguí recibiendo la adfs bucle cuando se accede a la página porque estaba en los grupos que fueron autorizados a acceder a la página.

La clave para la solución de problemas era hacer una página web que muestra mis adfs reclamaciones sin que necesariamente se requiera autenticación.

@if (User.Identity.IsAuthenticated)
{
    <div>UserName: @User.Identity.Name;</div>

    var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;
    <table>
        @foreach (var claim in claimsIdentity.Claims)
        {
        <tr><td>@claim.Type</td><td>@claim.Value</td></tr>
        }
    </table>


}

Me di cuenta de que me estaba inscrito en AD FS, y mis reclamaciones estaban recibiendo conjunto, por lo ADFS estaba funcionando. El problema real era mi fichero de configuración tenía UserADFS = "true" en lugar de UseADFS = "true", que básicamente hizo que mi código de autorización personalizado a falso retorno de la autorización. Por lo tanto, la página me mantuvo expedición de regreso a adfs para autenticar de nuevo.

De todas formas, si un usuario no tiene los reclamos correctos para acceder a la página, entonces esto puede ocurrir adfs iniciar sesión lazo, también.

Además, si usted escribió un atributo autorizar a medida que asegúrese de comprobar a cabo el siguiente enlace, que describe cómo evitar el bucle.

redirección bucle con el atributo .Net MVC Autorizar con ADFS reivindicaciones

HandleUnauthorizedRequest personalizado código de controlador para AuthorizeAttribute de ese enlace:

 protected override void HandleUnauthorizedRequest System.Web.Mvc.AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            //One Strategy:
            //filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);

            //Another Strategy:
            filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary(
                    new
                    {
                        controller = "u",
                        action = "LoginStatus",
                        errorMessage = "Error occurred during authorization or you do not have sufficient priviliges to view this page."
                    })
                );
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top