0

我知道 ASP.NET 支持各种身份验证模型,例如 Windows、表单、护照和最近的声明。

我有一个asp.net,它提示用户输入用户名/密码以登录,然后将输入的用户名/密码与应用程序数据库的用户表中的条目进行比较。所以,我的问题是,这种身份验证模型的术语/名称是什么?这在上面提到的 ASP.NET 支持的身份验证模型中属于哪里?

我还看到我知道的许多互联网站点都使用相同的方法。

(注意:我的应用程序保持简单,当然它有用户注册/添加页面、授权用户的个人资料表等)

4

3 回答 3

5

Windows、Forms、Passport、Claims 等。身份验证是BROWSER身份验证方案。它们是浏览器与服务器通信以提供凭据的机制。它们与数据库或任何其他存储机制(嗯,主要是......)无关。这些只是实现细节。

FormsAuthentication 使用 cookie 存储一个加密值,告诉服务器用户已通过身份验证。如果最终结果是发出 FormsAuthentication cookie,那么如何验证用户,无论是通过将事物与数据库进行比较、使用服务等,都无关紧要。

WindowsAuthentication 稍有不同,浏览器和 Web 服务器进行通信以共享 Kerberos 票证以验证身份,或者用户在服务器请求浏览器弹出的框中输入用户名密码。在这种模式下,服务器本身管理身份验证发生的方式,而不涉及应用程序。

BasicAuthentication 使用 HTTP 标头以明文形式发送密码,从技术上讲,它是一个编码密码,但它是众所周知的,因此任何人都可以对其进行解密。同样,它存储数据的实际方法取决于服务器,并且服务器在没有应用程序知识的情况下执行此操作。重要的部分是它是通过 HTTP 标头完成的。

其他类型的身份验证也是如此,它们都只是 cookie 和/或标头机制的变体。

这里的重点是,身份验证是关于任何给定的 HTTP 请求如何识别用户对服务器的身份,并最终确定应用程序。不是数据的存储方式或验证方式。因此,由于您没有告诉我们服务器和浏览器如何通信,我们无法告诉您身份验证是如何定义的,尽管几乎可以肯定它是 FormsAuthentication 的一种变体。

编辑:

只是一点历史课。之所以称为 FormsAuthentication,是因为身份验证系统不使用浏览器中的弹出对话框来输入凭据,而是通常网页提供一个 HTML 表单供用户输入凭据。除了根据请求传递 cookie 之外,浏览器根本不参与身份验证过程。

它应该更准确地称为“CookieBasedAuthentication”,但名称已经卡住并且可能会保持原样。ASP.NET 提供了一个称为 FormsAuthentication 的特定实现,但是您可以对任何基于 cookie 的身份验证方案执行相同的操作(尽管我不建议您自己滚动,但您几乎肯定会犯安全错误)。

有些人认为在 Session 中存储一个标志就足够了。在任何情况下都不要使用 Session 来存储身份验证信息。会话 cookie 未加密,很容易被盗和/或欺骗。使用众所周知的方法。

于 2013-10-13T00:24:42.910 回答
3

其他答案可能已经显示了大部分细节。但是,如果我们仔细分类 IIS 和 ASP.NET 级别,以下是您应该注意的差异,


IIS 身份验证

这首先发生,因为 HTTP 数据包首先到达 IIS 级别。IIS支持几种方式,

  • Anonymous(在 IIS 配置中配置的匿名用户帐户)
  • Windows(浏览器端用户)
  • 基本(浏览器端用户)
  • 摘要(浏览器端用户)

这些身份验证方法如何在数据包级别工作需要您捕获网络数据包并深入了解该级别的对话。

此身份验证的结果是 IIS 生成用户令牌并传递给 ASP.NET 管道。


ASP.NET 身份验证

ASP.NET 有自己的几种身份验证方法,

  • Windows(此处 ASP.NET 信任并解释 IIS 传递的用户令牌,并确定应该创建哪个 ASP.NET 用户身份以及它支持哪些角色,而无需在 ASP.NET 级别上进行进一步的身份验证。)
  • 表单(基于)身份验证(其中 ASP.NET 忽略用户令牌,并使用 cookie 或类似机制来构建高级身份验证方法。在 IIS 端,您通常设置匿名身份验证。)
  • 基于声明的身份验证、OpenID、OAthen 等与基于表单的类似,它们不太关心 IIS 生成的用户令牌。

可以在 IIS 上使用非匿名,在 ASP.NET 端使用非 Windows 来设置所谓的混合身份验证。

于 2013-10-13T01:36:10.340 回答
1

所有需要用户输入您维护的用户名和密码的身份验证方法都是表单身份验证的一种形式。这是因为您要求他们填写表格(用户名和密码)以对他们进行身份验证。

在此处或此处阅读有关它的更多信息

编辑:神秘人提供的答案比我的更完整和准确。

于 2013-10-13T00:18:33.680 回答