我知道ASP.NET支持各种身份验证模型,如Windows,Forms,护照和最近的声明。
我有一个asp.net,提示用户输入用户名/密码进行登录,然后将输入的用户名/密码与应用程序数据库的用户表中的条目进行比较。所以,我的问题是,这种身份验证模型的术语/名称是什么?这在上面提到的ASP.NET支持的身份验证模型中的位置是什么?
我也看到很多我认识的网站使用同样的方法。
(注意:我保持我的应用程序简单,当然它有用户注册/添加页面,用于授权用户的配置文件表等)
答案 0 :(得分: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未加密,很容易被盗和/或欺骗。使用众所周知的方法。
答案 1 :(得分:3)
其他答案可能已经显示了大部分细节。但是,如果我们仔细分类IIS和ASP.NET级别,下面是您应该注意的差异,
IIS身份验证
首先发生这种情况,因为HTTP数据包首先到达IIS级别。 IIS支持多种方式,
这些身份验证方法如何在数据包级别工作,这要求您捕获网络数据包并深入了解该级别的对话。
此身份验证的结果是IIS生成用户令牌并传递给ASP.NET管道。
ASP.NET身份验证
ASP.NET有几种自己的身份验证方法,
可以在IIS上使用非匿名,在ASP.NET端使用非Windows来设置所谓的混合身份验证。
答案 2 :(得分:1)