śledzę OAuth 2.0 odpowiedzialnego przykładowy kod Server http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-serverJaki jest prawidłowy sposób uruchomienia oprogramowania pośredniego OWIN cookie ustawionego na tryb uwierzytelniania pasywnego?
Jak również patrząc na opakowaniu samorodek pakiet Microsoft.aspnet.identity.samples (install-pakiet Microsoft.aspnet.identity.samples -Pre)
i próbuję zrozumieć, jak działa pasywne i aktywne oprogramowanie pośredniczące do plików cookie.
W przykładzie serwera autoryzacji plik cookie "Aplikacja" jest ustawiony jako pasywny. W próbce tożsamości, "ApplicationCookie" jest aktywne.
Kiedy czytam o tej właściwości, wyjaśnia ona, że pasywne oprogramowanie pośrednie jest wyzwalane tylko wtedy, gdy żąda tego pasujący typ AuthenticationType.
Gdybym edytować plik startup.auth.cs w Microsoft.aspnet.identity.samples i ustawić ciasteczko aplikacji do bierny, a następnie zalogować się, wydaje się, aby potwierdzić, ale nie rejestruje mnie.
Kopiąc głębiej w kodzie, widzę, że kontroler konto sprowadzają się do wywołania SignInHelper.SignInAsync
metoda ta pobiera claimsidentity od użytkownika, który jest wezwaniem do: CreateIdentityAsync (użytkownik, DefaultAuthenticationTypes.ApplicationCookie)
Oczywiście nie rozumiem czegoś, ponieważ z tego, co czytam i mogę powiedzieć, Plik cookie ma takie samo ustawienie AuthenticationType, co żądanie, ale po wywołaniu funkcji Authentication.SignIn plik Cookie nie wydaje się być ustawiony i wracam do strony głównej z opcjami rejestracji i logowania.
Aby powielić ten problem, należy uruchomić aplikację pusty asp.net nowy projekt, a następnie zainstalować pakiet przykładowy Identity, a następnie zmienić app.useCookieAuthentication startup.auth.cs do:
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))
}
});
Próbowałem zmieniając nazwa ciasteczka w startup.auth.cs i dodanie "niestandardowej" nazwy do kodu, który generuje roszczenie bez skutku.
Mam zamiar prowadzić badania, ale myślałem, że w międzyczasie skontaktuję się z tą społecznością.
Witaj Williamie, dzięki za to. Przeczytałem kilka razy na blogu i postach Brocka Allena i zasadniczo staram się zrozumieć to stwierdzenie: "Z drugiej strony pasywne oprogramowanie pośredniczące sprawdza tylko prośbę, gdy zostanie o to poproszony". Wydaje się, że sposób, w jaki można go poprosić, to wskazanie typu AuthenticationType, IE: Kiedy tworzysz tożsamość, możesz przekazać jej typ uwierzytelniania. jednak gdy to zrobię, cały mój kod uwierzytelniający się powiedzie, ale plik cookie nie jest ustawiony. Próbuję dowiedzieć się, co muszę zrobić ręcznie, że aktywne oprogramowanie pośredniczące robi automatycznie. – Steve
Aby dodać do powyższego, wiem, że po zmianie linii w kodzie w moim postu AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive na AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active wszystko działa w ten sam sposób, z wyjątkiem z Aktywny plik cookie jest ustawiany po uwierzytelnieniu i jestem zalogowany. Pasywne wszystko działa, ale nie ustawiono pliku cookie. Próbuję ustalić, co powinien zrobić programista, aby wyzwolić generowanie plików cookie, podobnie jak w przypadku aktywnego oprogramowania pośredniego. – Steve
Wywołanie SignIn z tożsamością roszczenia jest tym, co wyzwala generowanie plików cookie, tryb aktywny/pasywny nie powinien wpływać na generowanie plików cookie w ogóle Nie sądzę, –