构建安全的企业内部 WEB 程序
为了保护企业内部的敏感信息、方便用户管理、确保用户只访问他们应该访问的地方。我一直在寻找最便捷的方法……
查询了一些资料,下述是我个人的一些理解。我们集合 IIS 和 ASP.NET ,通过验证( authentication )和授权( authorization )来实现企业 WEB 程序的安全。客户端对 page.aspx 的请求是这样发出的: 
这里涉及到两个重要的概念,它们定义如下:
验证( Authentication ):标识请求页面的用户。( The process of identifying the user who is requesting the page ) .
授权( Authorization ):系统判定用户访问资源的权限。 (System determines which resources he or she has access to.)
** 第一步,我们需要确定身份验证的类型。 ** (条件 1 )在企业内部网中,我们已经有了包含所有用户帐号的数据库-活动目录,同时每一个登陆内部网的客户端都使用不同的用户帐号。现存的身份验证有: Windows 身份验证、 Forms 身份验证、 Microsoft Passport 身份验证。(条件 2 )其中 ** Windows ** ** 身份验证 ** 是基于现存的 Windows 安全架构,它通过角色( Roles )控制来实现 web 程序的安全性。(结论)根据上述条件,我们采用基于 Windows ( Windows-based )的身份验证,我们需在 Web.config 文件中这样描述:
1<configuration>
2<system.web>
3<authentication mode="”Windows”"></authentication>
4</system.web>
5</configuration>
(注意: XML 文件是区分大小写的)
为了实现 Windows 身份验证, IIS 提供了三种类型:基本验证( Basic )、域服务器简要验证 (Digest) 、集成 Windows 验证( Integrated Windows Security )。
(条件 1 )用户能够登陆到内部网,他就通过了活动目录对他的验证,并拥有一张证书( credential )。当用户请求安全页面时,浏览器就会把证书传送给 IIS 。(条件 2 ) 集成 ** Windows ** ** 验证 ** 就是把 IIS 要求的身份验证预先交由活动目录来完成。(结论)这就是说:采用集成 Windows 验证方式,用户一登陆内部网就预先通过了 IIS 对他的验证。所以,我们采用集成 Windows 验证。
** 第二步,对要访问的资源授权。 ** 对资源进行授权的方式有两种:文件授权( file authorization )和 URL 授权( URL authorization )。
** 文件授权 ** 基于 Windows 2000 的 ACL(Access Control List) ,它的优点在于通过 ACL 控制文件和文件夹是非常容易的;它的缺点在于,需要花费时间来管理不同文件 / 文件夹的 ACLs ,而且程序迁移时, ACL 并不随着文件夹 copy and past 而迁移。
** URL ** ** 授权 ** 是在 web.config 中对不同的 URL 或文件夹进行授权。它的优点在于程序迁移方便;缺点是需要在 web.config 中书写代码。
微软推荐我们采用文件授权的方式,但基于可迁移性考虑,我还是采用了 URL 授权方式。假设 marketing.aspx 是只有管理员和营销部 ( 成员都属于 marketing 用户组 ) 才能访问的页面, fold 文件夹下面包含了只有管理员和人事部 ( 假设成员都属于 human 用户组 ) 才能访问的页面。我们在 web.config 中这样设置:
1<configuration>
2<system.web>
3<authorization>
4<deny users="”?”"></deny> <!--“ ? ” 表示匿名用户 à
5
6</authorization>
7
8</authorization></system.web>
9</configuration>
首先,我们拒绝了匿名用户访问我们的 web 应用程序。接着我们在
1<configuration> 下加入:
2
3<location path="”marketing.aspx”">
4<system.web>
5<authorization>
6<allow admins,lxm_nt\marketing”="" roles="”lxm_nt\Domain"></allow>
7<!--- 允许管理员和营销用户组成员访问 à
8
9<deny users=”*” /--> <!--— 拒绝其他所有用户 à
10
11</authorization-->
12</authorization></system.web>
13</location>
14
15为了实现 fold 文件夹中的页面仅对管理员和人事部成员可见,我们在 fold 文件夹中添加上一个 web.config 文件。内容如下:
16
17<configuration>
18<system.web>
19<authorization>
20<allow admins,lxm_nt\human”="" roles="”lxm_nt\Domain"></allow>
21<deny users="”*”"></deny>
22</authorization>
23</system.web>
24</configuration>
25
26这里的 web.config 文件继承了父目录下的 web.config 文件的设置,并按自己的要求改写了设置。
27
28通过验证和授权这些简单的设置,我们在企业内部网中实现了初步的安全。</configuration>