Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET世界中,这种身份验证模型叫什么_Asp.net_.net_Security - Fatal编程技术网

在ASP.NET世界中,这种身份验证模型叫什么

在ASP.NET世界中,这种身份验证模型叫什么,asp.net,.net,security,Asp.net,.net,Security,我知道ASP.NET支持各种身份验证模型,如Windows、窗体、护照和最近的声明 我有一个asp.net,它会提示用户输入用户名/密码进行登录,然后将输入的用户名/密码与应用程序数据库的用户表中的条目进行比较。那么,我的问题是,这种身份验证模型的术语/名称是什么?在上面提到的ASP.NET支持的身份验证模型中,这属于何处 我还看到,我所知道的许多互联网站点都采用了同样的方法 (注意:我的应用程序很简单,当然它有用户注册/添加页面、授权用户的配置文件表等)所有需要用户输入用户名和密码的身份验证方

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

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

我还看到,我所知道的许多互联网站点都采用了同样的方法


(注意:我的应用程序很简单,当然它有用户注册/添加页面、授权用户的配置文件表等)

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

阅读更多关于它的信息或


编辑:Mystere Man提供的答案比我的更完整、更准确。

窗口、表单、护照、索赔等。。身份验证是浏览器身份验证方案。它们是浏览器与服务器通信以提供凭据的机制。它们与数据库或任何其他存储机制无关(嗯,大部分是…)。这些只是实施细节

FormsAuthentication使用cookie存储加密值,该值告诉服务器用户已通过身份验证。如何对用户进行身份验证,无论是通过将内容与数据库进行比较,还是使用服务等。。如果最终结果是发出FormsAuthenticationCookie,则所有这些都无关紧要

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

BasicAuthentication使用HTTP头以明文形式发送密码,从技术上讲,这是一个已编码的密码,但它是众所周知的,因此任何人都可以取消编码。同样,它存储数据的实际方法由服务器决定,服务器在不了解应用程序的情况下执行此操作。重要的是,它是通过HTTP头来完成的

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

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

编辑:

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

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


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

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


IIS身份验证

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

  • 匿名(在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来设置所谓的混合身份验证。

但我没有在web中设置
。配置您是否让用户为每个页面请求输入密码?如果不是,则以某种方式存储它们的身份验证值。你怎么做到的?回答得很好。这是绝对正确的。谢谢你花时间来讨论这么多细节。谢谢你的精彩解释