Легко создать приложение ASP.NET MVC, которое проверяет подлинность на основе пользователя домена Windows. Также легко создать тот, который использует отдельные учетные записи, хранящиеся с помощью Entity Framework. На самом деле существуют шаблоны проектов для обоих.
Но я хочу использовать типы BOTH типов аутентификации в одном приложении. Я попытался объединить код из обоих шаблонов проектов. У меня проблема в Startup.Auth.cs.
// from "Individual Accounts" template
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Существование проверки подлинности cookie для прокси-сервера owin, по-видимому, приводит к тому, что идентификаторы домена становятся не аутентифицированными. Если я выйду из этой строки, работает проверка подлинности домена. Но без этого я не могу поддерживать отдельные учетные записи пользователей.
Я загрузил исходный код проекта katana и изучил CookieAuthenticationHandler.cs, но я не совсем понимаю, как он работает в контексте конвейера OWIN.
Как я могу использовать инфраструктуру идентификации ASP.net, чтобы мое приложение могло аутентифицировать пользователей из домена Windows или хранилища пользовательских приложений?