Intermittente Umleitungsschleifen während der ADFS-Authentifizierung

Ich verwende Owin, um meine ASP.NET MVC 5-Anwendung (.NET 4.5, IIS 7/8) für die Authentifizierung bei einem ADFS-Setup eines Drittanbieters zu konfigurieren:

app.SetDefaultSignInAsAuthenticationType(WsFederationAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType
});

app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
    Wtrealm = Settings.Auth.Wtrealm,
    MetadataAddress = Settings.Auth.MetadataAddress
});

Ich habe auch einen benutzerdefinierten Authentifizierungsfilter (wird in Verbindung mit @ verwendeAuthorizeAttribute):

public class OwinAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
{
    public void OnAuthentication(AuthenticationContext filterContext)
    {
        var user = filterContext.RequestContext.HttpContext.User;

        var authenticated = user.Identity.IsAuthenticated;
        if (!authenticated)
        {
            return;
        }

        /* Redirect to profile setup if not already complete */
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
    }
}

Dies funktioniert in der Hälfte der Fälle, aber manchmal tritt bei der ersten Anmeldung eine Umleitungsschleife zwischen der App und der ADFS-Anmeldung auf. Dies scheint sitzungsspezifisch zu sein (tritt nicht für alle Benutzer gleichzeitig auf), und sobald die Umleitungsschleife auftritt, scheint sie so lange aufzutreten, bis ein Anwendungspool aktualisiert wird.

Wenn die Umleitungsschleife auftritt, kann ich (auf der Registerkarte "Netzwerk" von Chrome) immer noch sehen, wie ein gültiges Token aussieht, das von ADFS ausgegeben wird.

Es fällt mir schwer, die Ursache zu lokalisieren, aber ich habe festgestellt, dass - wenn die Schleife nicht auftritt,user.Identity ist vom TypClaimsIdentity undIsAuthenticated isttrue. Wenn es does auftreten,IsAuthenticated istfalse aberuser.Identity ist vom TypWindowsIdentity.

Alle Formen der Authentifizierung in IIS - mit Ausnahme von Anonym - sind deaktiviert. IIS Express wird nirgendwo verwendet.

Was könnte das verursachen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage