【发布时间】:2017-08-16 17:33:19
【问题描述】:
我有一个 ASP.Net MVC 5 应用程序,该应用程序当前正在使用个人身份验证(没有身份验证/匿名访问的帐户/login.cshtml 页面)和 OWIN。工作正常。
由于这是一个 Intranet 应用程序,我希望允许用户在其 windows 帐户、其他用户 windows 帐户或应用程序帐户(管理员、特殊用户等 - 这些帐户没有关联的域帐户)下登录。
对于第一个选项,我想在登录屏幕上显示他们的 Windows 用户名,他们只需单击“确定”按钮即可登录。为了获取用户名,我修改了 Visual Studio 项目属性以禁用匿名身份验证并启用 Windows 身份验证。还修改了 web.config 并将身份验证模式设置为 Forms。这会导致“HTTP 错误 404.15 - 未找到”。这似乎是由 OWIN 引起的身份验证循环造成的,需要修复以下建议:
- 确保登录控制器方法允许匿名访问(默认情况下似乎是这种方式)。
- 或修改 Startup.auth,注释掉 LoginPath 属性。
- 或修改web.config,添加值为“false”的appSetting“owin:AutomaticAppStartup”。
我选择了 LoginPath 修复,这似乎有效(web.config 更改也是如此),因为没有错误并且登录页面显示为 Windows 用户名(使用 System.Threading.Thread.Currentprinciple.Identity 检索。名称)。
现在的问题是,一旦用户登录,OwinContext 就没有用户了(HttpContext.GetOwinContext().GetUserManager())。
理想情况下,我不需要 IIS 或 OWIN 进行任何身份验证,因为它由应用程序完成 - 但我需要初始请求(针对帐户/登录页面)包含 Authenticate 标头,以便我可以获取 Windows 用户。
首先,我想了解导致“HTTP 错误 404.15”的原因并进行修复。 其次,如何让 OWIN 处理身份验证更改 - 我只需要它来持久化用户以进行控制器身份验证。
【问题讨论】:
标签: c# asp.net-mvc authentication