*摘要
。ASP.NET安全性
。基本验证和简要验证
。集成Windows验证
。表单验证
。SSL
。客户授权证书验证
。模拟
* 身份验证
。身份验证是指以下过程:获取标识凭据(如用户名和密码),并对照某一颁发机构来验证这些凭据。
。ASP.NET提供了四个身份验证提供程序:
-表单身份验证
-Windows身份验证
-Passport身份验证
-默认身份验证
* 表单身份验证
表单身份验证是指以下系统:将未经身份验证的请求重定向到一个超文本标记语言(HTML)表单,使用户能够在其中键入他们的凭据。在用户提供凭据并提交该表单后,应用程序对请求进行身份验证,然后系统以Cookie的形式发出身份验证票证。此Cookie包含凭据或用于重新获取标识的密钥。浏览器的后续请求自动包含此Cookie
* Windows身份验证
在Windows身份验证中,IIS执行身份验证,并将经过身份验证的标记传递给ASP.NET工作进程。使用Windows身份验证的优点是它需要的编码最少。在将请求传递给ASP.NET之前,您可能需要使用Windows身份验证来模拟IIS进行验证的Windows用户帐户。
* Passport身份验证
Psaaport身份验证是Microsoft提供的集中式身份验证服务,它为成员站点提供单一登录和核心配置文件服务。通常,当您需要跨越多个域的单一登录功能时,将使用Passport身份验证。
* 默认身份验证
当Web应用程序不需要任何安全功能时,将使用默认身份验证:此安全提供程序需要匿名访问。在所有身份验证提供程序中,默认身份验证为应用程序提供了最高的性能。当您使用自己的自定义安全模块时,也可以使用此身份验证提供程序。
* 授权
。授权是指验证经身份验证的用户是否可以访问请求资源的过程。
。ASP.NET提供以下授权提供程序:
-FileAuthorization:FileAuthorizationModule类进行文件授权,而且在使用Windows身份验证时处于活活状态。
-UrlAuthorization:UrlAuthorizationModule类进行统一资源定位器(URL)授权,它基于URL命名空间来控制授权。URL命名空间可能与NTFS权限使用的物理文件夹和文件路径存在很大的差别。
* ASP.NET模拟
缺省情况下,ASP.NET应用程序以本机的ASPNET帐号运行,该帐号属于普通用户组,权限受到一定的限制,以保障ASP.NET应用程序运行的安全。但是有时需要某个ASP.NET应用程序或者程序中的某段代码执行需要特定权限的操作,比如某个文件的存取,这时就需要给该程序或相应的某段代码赋予某个帐号的权限以执行该操作,这种方法称之为身份模拟(Impersionation)
* Web服务的安全性
。对于我们的ASP.NET应用程序,Web服务支持多种类型的安全设置,它们是:
-结合或不结合SSL的基本验证
-简要验证
-集成Windows验证
-客户授权证书验证
-结合或不结合SSL的表单验证
-自定义验证和授权
* 基本验证
。基本验证的优点:
-易于实现并且大多数Web服务器都支持,包括IIS
-在IIS设置中简单设置就可以实现
-大多数浏览器都支持
-为所有代理和防火墙支持
。基于验证的缺点:
-用户名和密码以明码发送
-对于每个请求,用户名和密码都要被传送
-不能靠自定义权限使用它。
* 简要验证方式
。除了以不同的方式传递身份外,简要验证和基本验证相同。简要验证的身份证以过了单向散列处理。
。简要验证的优点:
-像基本验证一样易于实现
-为所有的代现和防火墙支持
-用户名和密码不以明码发送
。简要验证的缺点:
-仅被Windows2000和IIS5和更高版本支持
-仅被当前流行的浏览器支持,IE4.0或Netscape4.0以上
-Windows服务器操作系统利用活动目录存储Windows用户帐号。
。简要验证的实现:
-需要在安装IIS的地方设置活动目录,或拥有对活动目录服务器的访问权
-与基本验证不同仅仅在于是为Windows域服务器选择简要验证选项而不是基本验证选项。
* 集成Windows验证
。集成Windows验证的优点:
-容易实现并被IIS支持
-在IIS设置中简单设置就可以实现
-密码不通过网络发送
。集成Windows验证的缺点:
-仅被IE2.0以上版本浏览器支持
-不能应用在代理服务器上
-附加的TCP端口只有在防火墙被打开时才能使用
-不能靠自定义权限使用它
。集成Windows验证的实现
-设置步骤和基本验证基本相同,只是选择“集成windows验证”而不是“基本验证”。
* 表单验证
。表单验证:允许您以一个自定义权限来验证用户。它是完全自定义的,提供内置功能来管理Cookie,全权负责有关加密、解密、验证的
负责事项和当用户沿末被授权时它将把用户转送到注册页面等等。
。表单验证的优点:
-易于实现
-无过高的要求
-支持自定义权限
。表单验证的缺点:
-需要Cookie
-需要更大的内存和更高的处理能力。
* SSL
。SSL(Security Socket Layer)3.0加密套接字协议层和TLS(加密传输协议层)1.0协议(一般统称为SSL)是Web上最具正意义的安全通信标准。
。使用SSL,服务器和浏览器之间传送的数据通过PKI(Public Key Infrastructure,公钥加密机制)技术加密。
* SSL的优缺点
。SSL的优点:
-服务器验证
-数据完整性
-保密性
。SSL的缺点:
-性能:客户机和服务器对每个用户请求进行一次加密和解密操作,这样会影响性能
-需要开放SSL端口:默认为443端口
-HTTP到HTTPS:SSL使用HTTPS协议
-额外开销
* SSL的使用
。首先,必须从IIS他建一个CSR(Certificate Signing Reuqest授权证书签署申请),步骤参见:
http://www.verisign.com/support/ssl-certificates-support/page_DEV019431.html
。其次要从CA(Certification Authority证书颁分机构)比如VerSign和Thawte处获得一个授权证书
http://www.verisign.com/ssl/index.html
。然后,在IIS上安装SSL
。如果使用测试证书,需要安装Test CA Root,以便IE浏览器能够正确使用测试证书
* 客户授权证书验证
。服务器授权证书用来验证服务器的可信性,客户授权证书用来识别服务器上的客户。
。需要购买客户授权证书
。可以从以下地址获得测证书
-http://www.versign.com/products-services/security-services/pki/page_013548.html
-客户授权证羽通知安装在Web客户上。通过IE浏览器可以安装客户证书。
* 模拟
。模拟是一种允许代码在与当前登录用户不同的身份下运行的方法。
。配置文件中的Impersonate属性可以让我们实现这个目的
。模拟IIS认证帐号:
<IDENTITY Impersonate="true" />
。在某个ASP.NET应用程序中模拟指定的用户帐号
<IDENTITY Impersonate="true" userName="accountName" password="password" />