16.1 ASP.NET的安全性
知识点讲解:光盘:视频\PPT讲解(知识点)\第16章\ASP.NET的安全性.mp4
安全性问题是一切项目程序的核心构成部分,特别是作为网络上使用的站点程序,安全问题更是重中之重。为了保证站点的特定信息,维护系统程序的安全,读者需要对安全性问题进行了解并掌握。
16.1.1 ASP.NET安全性的几个相关概念
- 身份验证:许多Web应用程序的一个重要部分是能够识别用户和控制对资源的访问。确定请求实体的标识的行为称为身份验证。通常,用户必须提供凭据(如名称/密码对)才能进行身份验证。
- 授权:一旦经过身份验证的标识可用,就必须确定该标识是否可以访问给定的资源。此过程称为授权。ASP.NET需要与IIS一起使用为应用程序提供身份验证和授权服务。
- 模拟:在默认情况下,ASP.NET使用本地系统账号的权限执行(而不是请求的用户),使用模拟后,ASP.NET需要应用程序可以用发出请求的用户的Windows标识(用户账户)执行。
- 基于角色的安全性:对于一个庞大的用户系统,不可能为每一个用户都单独授权,如果把用户划分成不同的角色,然后对角色进行授权,那么这个工作会简单很多。
16.1.2 ASP.NET安全结构
ASP.NET中,安全系统之间的关系如图16-1所示。
图16-1 ASP.NET安全结构
如图16-1所示,所有Web客户端都通过Internet信息服务(IIS)与ASP.NET应用程序通信。IIS根据需要对请求进行身份验证,然后找到请求的资源(如ASP.NET应用程序)。如果客户端已被授权,则资源可用。当运行ASP.NET应用程序时,它可以使用内置的ASP.NET安全功能。另外,ASP.NET应用程序还可以使用.NET框架的安全功能。
16.1.3 身份验证的方式
ASP.NET需要和IIS一起使用来支持身份验证,并可以使用如下3种身份验证方式。
- 基本身份验证。
- 摘要式身份验证。
- 集成Windows身份验证。
ASP.NET还为要使用基于窗体的身份验证的应用程序提供可靠的服务。基于窗体的身份验证使用Cookie鉴别用户的身份,并允许应用程序执行自己的凭据验证。要启用ASP.NET身份验证服务,必须在Web.config中配置<authentication>元素。
<configuration>
<system.web>
<authentication mode="Forms"/>
</system.web>
</configuration>
其中,mode属性用于设置验证方式,其取值的具体说明如下。
- None。不使用任何ASP.NET身份验证服务,但是IIS身份验证服务仍可以存在。
- Windows。基于Windows的身份验证,适合内网系统的身份验证方式。ASP.NET身份验证服务将WindowsPrincipal附加到当前请求以启用对NT用户或组的授权。
- Forms。基于表单(Cookie)的身份验证,适合外网系统的身份验证方式。ASP.NET身份验证服务管理Cookie,并将未经身份验证的用户重定向到登录页。
- Passport。微软提供的集中式身份验证服务。由于需要依赖微软的网站(用户登录会转到微软Passport站点,然后跳转回原网站)而且需要付费,所以一般不适合小型网站使用。在本书的第21章中,会介绍一个集中式单点登录的方案。