手机版

ASP.NET几种常见认证方法概述

时间:2021-11-14 来源:互联网 编辑:宝哥软件园 浏览:

在B/S系统的开发中,经常需要“认证”。因为web应用非常特殊,不像传统的C/S程序,默认情况下(没有任何认证和权限控制的手段),你的程序在Internet/LAN上发布后,任何人都可以访问你的web应用的资源,所以很难保证应用的安全性。一般来说,对于大多数内部系统和业务支持平台,用户必须登录,否则无法访问和操作任何页面。至于互联网(网站),则有些不同,因为网站的大部分页面和信息通常都是对公众开放的,只需要在涉及注册用户个人信息的操作或网站的后台管理时提示登录即可。(如果不做严格的核查,后果会很严重。一旦人们猜出了你的网页目录下的网页名称,他们就可以随意访问。当然一般的开发者不会犯这么低智商的错误。如何实现“认证”我记得n年前第一次接触Servlet JSP开发的时候,有个东西叫“Filter”,真的很神奇。有了这个神奇的东西,我不再需要去每一个页面判断什么是“会话”或者“cookie”,就可以弹出登录的用户(实现的水平有限)。当然,在传统webform的开发中,也可以编写一个“BasePage的鸡肋”,在这个类中进行判断,让每个页面对应的类实现这个“鸡肋”。我想很多公司以前都这样做过。在ASP.NET,微软实际上提供了一套完整的机制来实现“成员角色管理”。包括:“登录控制”、“会员资格”、“个性化数据库”等。但是大多数开发人员从来不使用这些(例如,我已经使用微软的ASP.NET三四年了,我从来没有见过登录控件是什么样子的)。ASP.NET有三四种认证。由于某些身份验证方法依赖于IIS和windows操作系统,因此不同版本的操作系统和IIS之间存在一些差异。由于笔者暂时使用的是windows 7操作系统,我就以IIS 7.5为例。首先打开IIS,然后双击右侧的“身份验证”,会显示出目前IIS支持的所有身份验证方式(因为我安装IIS的时候,都是在“安全”里面勾选的)。可以看到图片:

大致可以分为以下几类:1。active directory的客户端证书(这可能是收费的),不常用,不再赘述。2.ASP.NET模拟(MSDN:如果您想在ASP.NET应用程序的非默认安全上下文中运行ASP.NET应用程序,请使用ASP.NET模拟。),我不明白机器人说了什么。3.表单认证:这个用的很多,后面会详细说明。4.windows身份验证:基于windows操作系统的用户或域用户的身份验证。5.基础认证:其实也是基于windows操作系统的账号认证。6.匿名身份验证:任何人都可以访问它,它的内部也可以通过指定windows系统的特定用户帐户来访问。7.摘要身份验证:使用Windows域控制器对请求访问Web服务器内容的用户进行身份验证。我们来看看经典的IIS 6的截图:

注:NET Passport可以理解为微软“单点登录”的一种实现方案,这里就不细说了。随着“Open API”“SOA”“云计算”的普及,作为一名网络程序员,如果你没有听说过“单点登录”,请自行购买前往福州的火车票。首先在IIS 7上测试基本身份验证:首先禁用所有其他身份验证方法,然后仅启用“基本身份验证”。有一幅画是真实的:

然后打开IE、FireFox、chrome等浏览器,键入localhost,等待在IIS上打开默认网站。你会发现浏览器端会弹出提示框信息,不同浏览器上弹出框的样式和表达方式是不一样的。(长时间不用IE后,发现老流氓360改了哥哥主页,自称“安全上网”,明显是篡改。不懂。)9503.163.com

在FireFox中:

如果您在弹出框中输入正确的windows帐户和密码,您可以正常浏览您请求的网页。如果你没有失败或犯错误,等待你的将是一个401错误(401,你知道)。

网站未启用SSL,它将通过电缆以明文形式显示.机器人说的话听起来有些尴尬,下面,我来解释一下。当你不花钱买SSL证书(安全套接字层)的时候,你可以简单的理解为正常的http请求都是以明文传输的,使用SSL可以帮助你自动加密http消息,即使有人在网上拦截,也无法解密。当我们偶尔访问一些网站时,我们看到的“https://www.xxx.com”很可能是基于SSL证书的)。至于“用明文电报……”,其实这句话很不对。首先,电缆只是一种传输介质,只传输电脉冲和光信号,不传输网络协议报文(学过计算机网络的人都知道)。至于说“以明文形式”,也是不对的。事实上,在“基本身份验证”中,用户名和密码是用Base64编码的。感兴趣的读者可以使用httpwatch或Fiddler等工具来监控http请求,所以我在这里就不做演示了。只有Base 64编码容易解码,所以和纯文本没什么区别。这样你会发现“基础认证”确实有很多不安全的因素。在IIS 7上测试windows身份验证:与之前的基本身份验证类似,所以我就不截图演示了。如果用户输入正确的windows用户名和密码,他们可以正常访问网站。如果输入不正确,则返回401.1(之前的基本身份验证是401.2)。值得一提的是,我记得一位ASP.NET MVP曾经告诉我,在使用windows身份验证时,只有用户在使用IE浏览器时才能正常访问。在这种情况下,浏览器直接与操作系统交互来验证用户名和密码,而不是http消息传输。确认后发现这句话后半句是正确的,确实无法监控http实体的内容。但不限于IE浏览器,我在火狐也能正常访问和使用。匿名认证:匿名认证实际上可以理解为“不认证”。也就是说,匿名用户可以不受任何限制地访问资源。通常,我们的网站应该启用匿名身份验证并集成windows身份验证。不难发现,匿名认证实际上是由windows用户组中的特定用户验证的,如图所示:

最后,表单身份验证:上面提到的所有身份验证方法都与ASP.NET没有直接关系,都是IIS和操作系统级别的身份验证方法。表单认证需要ASP.NET的支持。因为网站的认证和成员管理通常非常复杂,这不是简单的认证方法可以实现的。对于大多数互联网网站,用户可以访问一些页面,但有些页面只有登录后才能访问和操作。而且不同用户登录的操作权限也不同。这将涉及到很多知识,实现的方法也很多。

版权声明:ASP.NET几种常见认证方法概述是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。