Mam starszą aplikację do tworzenia formularzy internetowych i opracowuję nową wersję MVC, aby ją zastąpić. Oba muszą biegać ramię w ramię przez jakiś czas i potrzebuję pojedynczego logowania do pracy. Wcześniej użytkownicy logowali się za pomocą aplikacji formularzy internetowych i udało mi się ustawić uwierzytelnianie formularzy w taki sposób, że aplikacja MVC mogła uwierzytelnić się za pomocą pliku cookie.OWIN Uwierzytelnianie plików cookie między ASP.NET MVC i Webforms Aplikacje z tym samym kodem MachineKey
Nowe formularze logowania są już gotowe w aplikacji MVC i użytkownicy będą teraz musieli się z nich zalogować. Aplikacja MVC używa Identity 2.x i OWIN. Początkowo próbowałem skonfigurować plik cookie OWIN tak, aby był zgodny z ustawieniami w starszej wersji formularza internetowego, ale nie mógł pobrać aplikacji internetowej, aby odczytał plik cookie i uwierzytelnił użytkownika.
Od tego czasu zdecydowałem się zainstalować Indentity 2.x i OWIN w aplikacji webform. Ustawiłem identyczne ustawienia. Wygaśnięcie to 30 minut, a Domena to "", a Ścieżka to "/". Widzę plik cookie generowany z aplikacji MVC, ale nie jest on odbierany przez aplikację webform. Nadal otrzymuję komunikat o odmowie dostępu.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieName = Settings.Default.CookieName,
CookiePath = Settings.Default.CookiePath,
CookieDomain = Settings.Default.CookieDomain,
LoginPath = new PathString(Settings.Default.CookieLoginPath),
ReturnUrlParameter = Settings.Default.CookieReturnUrl,
ExpireTimeSpan = Settings.Default.CookieExpireTimeSpan,
SlidingExpiration = Settings.Default.CookieSlidingExpiration,
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Pozostawiłem ustawienia maszyny perkusyjnej (które wcześniej działały w celu uwierzytelniania formularzy) takie same. Usunąłem jednak uwierzytelnianie formularzy z obu plików konfiguracyjnych.
Czy źle skonfigurowałem coś lub czy jest wymagana większa konfiguracja, aby umożliwić współdzielenie pliku cookie OWIN pomiędzy aplikacjami z tym samym urządzeniem?
UPDATE
- stworzył nową aplikację WebForms z indywidualnymi kontami użytkowników.
- Dodano MachineKey
- Zmieniono konfigurację MVC app standardowe ustawienia (replikacji nowego projektu)
Nowy webforms aplikacja wymienia ciasteczko, ale nie będzie jeszcze uwierzytelnienia użytkownika.
UPDATE Zobacz odpowiedź poniżej.
Dzięki za udostępnienie! Stawiam czoła tym samym wyzwaniom, czy masz jakiś kod źródłowy, który możesz nam udostępnić? –