Tôi có ứng dụng biểu mẫu web kế thừa và đang xây dựng một phiên bản MVC mới để thay thế nó. Cả hai cần phải chạy cạnh nhau một thời gian và tôi cần đăng nhập một lần để làm việc. Trước đây, người dùng đã đăng nhập thông qua ứng dụng biểu mẫu web và tôi đã có thể thiết lập thành công xác thực biểu mẫu sao cho ứng dụng MVC có thể xác thực thông qua cookie.Chia sẻ cookie xác thực OWIN giữa ASP.NET MVC và các ứng dụng Webforms với cùng một MachineKey
Biểu mẫu đăng nhập mới hiện đã hoàn tất trong ứng dụng MVC và người dùng giờ đây sẽ được yêu cầu đăng nhập từ các ứng dụng này. Ứng dụng MVC sử dụng Identity 2.x và OWIN. Ban đầu, tôi đã cố gắng định cấu hình cookie OWIN để khớp với cài đặt trong ứng dụng biểu mẫu web kế thừa nhưng không thể lấy ứng dụng biểu mẫu web để đọc cookie và xác thực người dùng.
Kể từ đó, tôi quyết định cài đặt Indentity 2.x và OWIN vào ứng dụng biểu mẫu web. Tôi đã thực hiện các cài đặt giống hệt nhau. Hết hạn là 30 phút và Tên miền là "" và Đường dẫn là "/". Tôi có thể thấy cookie được tạo ra từ ứng dụng MVC nhưng nó không được chọn bởi ứng dụng webforms. Tôi tiếp tục nhận được thông báo Từ chối Truy cập.
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))
}
});
Tôi đã để lại các cài đặt máy móc (trước đây đã hoạt động để xác thực biểu mẫu). Tuy nhiên, tôi đã xóa xác thực biểu mẫu khỏi cả hai tệp cấu hình.
Tôi đã định cấu hình sai một cái gì đó hoặc có cần cấu hình thêm để bật chia sẻ cookie OWIN giữa các ứng dụng có cùng một máy không?
CẬP NHẬT
- Tạo một ứng dụng webforms mới với User Accounts cá nhân.
- gia tăng các MachineKey
- Thay đổi cấu hình của MVC app chuẩn cài đặt (sao chép một dự án mới)
Ứng dụng webforms mới liệt kê các tập tin cookie nhưng sẽ vẫn không xác thực người dùng.
CẬP NHẬT Xem câu trả lời bên dưới.
Cảm ơn bạn đã chia sẻ! Tôi đang đối mặt với những thách thức tương tự, bạn có bất kỳ mã nguồn nào mà bạn có thể chia sẻ với chúng tôi không? –