构建安全的企业内部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文件中这样描述:
<configuration>
<system.web>
<authentication mode=”Windows” />
</system.web>
</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中这样设置:
<configuration>
<system.web>
<authorization>
<deny users=”?” /> <!--“?”表示匿名用户à
</authorization>
</system.web>
</configuration>
首先,我们拒绝了匿名用户访问我们的web应用程序。接着我们在<configuration>下加入:
<location path=”marketing.aspx”>
<system.web>
<authorization>
<allow roles=”lxm_nt\Domain Admins,lxm_nt\Marketing” />
<!-允许管理员和营销用户组成员访问à
<deny users=”*” /> <!—拒绝其他所有用户à
</authorization>
</system.web>
</location>
为了实现fold文件夹中的页面仅对管理员和人事部成员可见,我们在fold文件夹中添加上一个web.config文件。内容如下:
<configuration>
<system.web>
<authorization>
<allow roles=”lxm_nt\Domain Admins,lxm_nt\human” />
<deny users=”*” />
</authorization>
</system.web>
</configuration>
这里的web.config文件继承了父目录下的web.config文件的设置,并按自己的要求改写了设置。
通过验证和授权这些简单的设置,我们在企业内部网中实现了初步的安全。
本文地址:http://com.8s8s.com/it/it45643.htm