ASP .NET MVC在工作期间进行身份验证并保持用户身份验证的最佳实践

shd*_*hdr 5 asp.net authentication asp.net-mvc

我正在调查这个问题,并得到许多不同的建议,有人可以帮助您详细说明该主题吗?

  • 现有方法
  • 限制条件
  • 利弊
  • 防范攻击

我正在寻找简短的评论以获取指导。

编辑:

观众是来自世界各地的需要注册的用户。

Tra*_*ton 4

这里给出一些我有专业经验的系统的答案:

注意:如果您回答我在有关您的应用程序的参数的评论中提出的问题,我可以进一步定义积极/消极。

ASP.NET 身份

附带使用用户名和密码的 MVC 框架的基本 MS 用户系统。这样做的好处是,这个概念已经存在很长时间了,并且有大量教程向您展示如何扩展它以使用电子邮件/密码等内容或从用户那里收集某些数据,例如他们母亲的狗的中间名或任何。如果您有一个用户可以共享计算机的环境,您还需要查看此处。认为工厂或医院的设置还算不错。这样做的缺点是,您基本上被迫维护应用程序(或应用程序集群)中包含的整个用户设置、应用程序角色、用户管理。谈到这一点时,请考虑表单身份验证。如果您的应用程序是外部的并且公开 AD 服务让您的安全团队感到不舒服,您可能需要查看此内容。

Windows 身份验证。

您基本上是根据 Windows 用户帐户进行身份验证,尽管没有必要,但在大多数情况下,您会为角色提供程序处理诸如 Active Directory 之类的内容。这样做的好处是,您的应用程序实际上不再负责用户管理以及随之而来的所有支持(weeeeee!),而是您拥有更多授权角色在您的应用程序中工作。这使它变得轻而易举,但一个巨大的失败是,如果您的用户可能共享计算机,那么这将是一个巨大的安全噩梦。您可能希望定位拥有自己的特定计算机的用户,他们可以在其中工作并坐在这台计算机上。如果您的应用程序是外部托管的,这将成为一场噩梦,因为它的某些服务需要从外部访问,因此很容易使您的 AD 容易受到攻击。

Forms/Windows 混合模型

在此,您基本上将站点配置为在表单身份验证上运行,但您的表单身份验证系统设置为对 AD 中的用户进行身份验证作为后台进程。因此,这更适合当您有多种用户时,其中一些用户共享计算机,一些用户拥有专用计算机。您基本上是在设置自己的表单身份验证网站,该网站接受重定向 url 以及用户的用户 AD 名称和密码。然后,表单身份验证网站会检查用户凭据在 Active Directory 中是否有效,设置会话 cookie 等有趣的内容,并将用户重定向回经过身份验证的用户的 MVC 站点。在您的 MVC 站点上,您也有 AD 连接器(或者您可以有 N 层设计来查找它)来告诉您用户属于哪些 AD 组并进行适当的处​​理。因此,像这样的系统的优点是,您可以将用户管理方面从单个站点中移开,并将该责任放回 AD 中,但同时您可以灵活地将基本上是 Windows 身份验证的应用程序启动到具有混合用户的环境中(拥有专用补偿的人和共享的人。)这样做的缺点是,最初的第一次设置是一个巨大的痛苦,因为您本质上是在构建多个系统。此外,安全性也是一个问题,因为只要您拥有共享计算机环境,就更容易受到滥用。你必须制定一个良好的会话超时策略,并以此为生。您还可以将表单与站点一起放置在 DMZ 中,并将外部托管应用程序与 AD 直接交互分开。但缺点是您需要处理 AD 锁定、密码重置、暴力尝试等问题。

外部提供商,例如 facebook、twitter、google 以及 OAuth 等

我个人从未在生产应用程序上走过这条路,所以我不能给你现实世界的积极或消极的信息,但它需要提及,也许其他人可以给我们一些见解。

对此答案中的大量文本块表示歉意,当我可以进入桌面时,将使格式变得更“漂亮”。