关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » .NET »ASP.NET七大身份验证方式及解决方案

    ASP.NET七大身份验证方式及解决方案

    2014-12-11 00:00:00 出处:tankqiu的博客
    分享

    在B/S系统开发中,经常需要使用“身份验证”。因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性。通俗点来说:对于大多数的内部系统、业务支撑平台等而言,用户必须登录,否则无法访问和操作任何页面。而对于互联网(网站)而言,又有些差异,因为通常网站的大部分页面和信息都是对外公开的,只有涉及到注册用户个人信息的操作,或者网站的后台管理等才需要提示登录。(如果不做严格验证,后果将很严重,人家一旦猜出你web目录下面的页面名,可以随意访问。当然,一般的开发人员是不会犯这种低智商的错误的)。

    如何实现“身份验证”

    记得N年前我最早接触Servlet + JSP开发的时候,有一种叫做“过滤器”(Filter)的东西,真是很神奇。有了这件神奇的东西后,我再也不需要去每个页面判断什么“session”或者“cookie”了,就能把未登录用户给弹出去(水平实现有限)。当然,在传统webform开发中,也可以写一个“BasePage的鸡肋”,在该类中去做判断,让每个页面对应的类都去实现这个”鸡肋”,我看以前很多公司都是这么干的。

    在asp.net中,其实微软提供了一整套的完整的机制来实现“成员角色管理”。包含有:”登录控件”、“membership”、“个性化数据库”等等。但是大多数开发人员是从来不用这些的(例如我,用微软的asp.net三四年,还从来没见过“登录控件”长啥样)。在asp.net身份验证中,主要有三四种。因为有些身份验证的方式是依赖于IIS和windows操作系统的,所以在不同版本的操作系统和IIS上还是有些差异的。由于笔者暂时使用的是windows 7的操作系统,所以就拿IIS 7.5为例子。

    首先打开IIS,之后呢双击右侧“身份验证”,会显示出当前IIS支持的所有的身份验证方式(由于我安装IIS时候,在“安全性”那里我是全部勾选的)。可以看到如图:

    大致分为如下几种:

    1.活动目录的客户端证书(这个很可能是收费的),不常用,不细说。

    2.ASP.NET模拟(MSDN:如果要在 ASP.NET 应用程序的非默认安全上下文中运行 ASP.NET 应用程序,请使用 ASP.NET 模拟。),机器人说的我听不懂。

    3.Form身份验证:这个用的很多,后面会细说。

    4.windows身份验证:基于windows操作系统的用户或者域用户的身份验证。

    5.基本身份验证:其实也是基于windows操作系统的账户验证的。

    6.匿名身份验证:谁都可以访问,其内部也是通过指定一个特定的windows系统的user账户来访问的。

    7.摘要身份验证:使用 Windows 域控制器对请求访问 Web 服务器内容的用户进行身份验证。

    再来看看经典的 IIS 6的截图:

    先在IIS 7上测试一下基本身份验证:

    首先把其他的身份验证方式全部禁用掉,之后呢仅仅启用“基本身份验证”。有图有真相:

    之后呢打开IE、FireFox、chrome等浏览器,敲入localhost,等待打开IIS上的默认网站。你会发现,浏览器端都会弹出提示框信息,而且在不同浏览器上弹出框的样式和表现形式也有所差异。(长期不用IE,发现360这个老流氓把哥的首页给改了,还号称”安全上网“,这明显是篡改行为嘛。搞不懂。)

    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浏览器,我在firefox中也能够正常的访问和使用。

    匿名身份验证:

    所谓匿名身份验证,其实就可以理解为“不验证”。就是匿名用户都可以访问资源,没有任何限制。通常我们的网站,都要启用匿名方式验证,集成windows身份验证。不难发现,其实匿名身份验证,也是通过windows用户组里面的一个特定的用户来通过验证的,如图所示:

    最后一种,Form身份验证:

    前面所讲的那些身份验证方式,其实都和asp.net没有直接的联系,都是IIS 和操作系统级别的验证方式。而Form 身份验证,则需要asp.net提供支持。因为通常网站的身份验证和成员管理都非常复杂,而不是通过单纯的某一种验证方式能够实现的。对于大部分互联网的网站而言,用户可以访问部分页面,但部分页面必须登录后才能访问和操作,而且不同用户角色登录,操作权限也不一样。这又会涉及到很多方面的知识,而且实现方式也有很多种。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。