返回列表    

[分享] .Net的几种身份验证方式

  在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上还是有些差异的。

  大致分为如下几种:

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

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

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

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

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

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

  7.摘要身份验证:使用 Windows 域控制器对请求访问 Web 服务器内容的用户进行身份验证。(啊啊……太长了,节选自这里
恨匆匆 萍踪浪影 风剪了玉芙蓉
小兄弟。。。mac 与 .net无缘
没事多点点致谢好吗 :)
更多姿势:W2B
iPhone 6 Plus 国灰
Clevo W230ST(Terrans Force X311)
Macbook Pro ME294ZP/A (i7 2.6GHz, 16G, 1T SSD, GT750, OS X 10.10.4)
iPhone 5 16G 港白
Macbook Air MC505CH/A (i7 1.8GHz, 4G, 128G SSD, OS X 10.9 / Win 7)
iPhone 4s 16G 加白
返回列表