Ich habe http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-serverWas ist der richtige Weg, um die OWIN-Cookie-Middleware auszulösen, die auf den passiven Authentifizierungsmodus gesetzt ist?
am Nugget Paket Microsoft.aspnet.identity.samples PaketNeben der Suche nach dem OAuth 2.0 Autorisierungsserver Beispielcode wurde (Installationspaket Microsoft.aspnet.identity.samples -Pre)
und versuche herauszufinden, wie passive vs. aktive Cookie-Middleware funktioniert.
Im Beispiel des Autorisierungsservers wird das Cookie "Application" auf passiv gesetzt. In den Identity-Beispielen ist "ApplicationCookie" aktiv.
Wenn ich über diese Eigenschaft lese, wird erklärt, dass passive Middleware nur ausgelöst wird, wenn sie von einem passenden AuthenticationType angefordert wird.
Wenn ich die startup.auth.cs Datei im Microsoft.aspnet.identity.samples bearbeiten und die Anwendung Cookie passiv eingestellt, dann melden Sie sich an, so scheint es, zu überprüfen, aber nicht log mich nicht in.
Graben tiefer in den Code, ich sehe, dass das Konto Controller einkochen zu einem Aufruf an SignInHelper.SignInAsync
Diese Methode gibt eine claimsidentity vom Nutzer betrieben wird, die einen Anruf: CreateIdentityAsync (user, DefaultAuthenticationTypes.ApplicationCookie)
Ich verstehe offensichtlich etwas nicht, da von dem was ich lese und erzählen kann, th Der Cookie hat den gleichen AuthenticationType wie der Claim, aber wenn der Authentication.SignIn aufgerufen wird, scheint der Cookie nicht gesetzt zu sein und ich werde auf die Hauptseite mit Optionen zur Registrierung und Anmeldung zurückgeleitet.
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider {
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
ich die Veränderung haben versucht:
Um das Problem zu duplizieren, um ein neues Projekt leer asp.net Anwendung starten, dann die Identität Probe-Paket installieren, dann startup.auth.cs der app.useCookieAuthentication zu ändern Cookie-Name in der Datei startup.auth.cs und Hinzufügen des "benutzerdefinierten" Namens zu dem Code, der den Anspruch ohne Erfolg generiert.
Ich werde weiter forschen, dachte aber, ich würde in der Zwischenzeit die Community erreichen.
Hallo William, Danke für das. Ich habe den Blog von Brock Allen gelesen und poste ein paar Mal darüber und versuche im Wesentlichen, diese Aussage herauszufinden: "Passive Middleware hingegen prüft nur die Anfrage, wenn sie dazu aufgefordert wird." Es scheint, die Art, es zu fragen, ist, den AuthenticationType, IE anzugeben: Wenn Sie einen Anspruch erstellen, können Sie ihm einen Authentifizierungstyp übergeben. Aber wenn ich das tue, ist mein Authentifizierungscode erfolgreich, aber der Cookie ist nicht gesetzt. Ich versuche herauszufinden, was ich manuell tun muss, dass aktive Middleware das automatisch macht. – Steve
Um zu den oben genannten hinzuzufügen, weiß ich, dass, wenn ich die Zeile im Code in meinem Beitrag ändern AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive zu AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active funktioniert alles auf die gleiche Weise außer Mit Active wird der Cookie nach der Authentifizierung gesetzt und ich bin eingeloggt. Passive alles funktioniert aber kein Cookie ist gesetzt. Ich versuche herauszufinden, was ein Entwickler tun muss, um die Cookie-Generierung wie eine Active Middleware auszulösen. – Steve
Calling SignIn mit einer Claims-Identität ist das, was die Cookie-Generierung auslöst, der Aktiv/Passiv-Modus sollte die Cookie-Generation überhaupt nicht beeinflussen Ich glaube nicht, –