构建Web应用程序结构

时间:2020-12-24 20:39:13


构建Web应用程序结构

        这里我们使用一个仅有基本功能的示例来说明EFS,此法也适用于其它相同的逻辑与设计的应用。目的是使外部用户或者内部用户能够通过安全的HTTPS通道来访问数据。这里我们需要配置一个虚拟目录,这样用户不仅可以访问存储于本地的数据,而且还能通过本地web服务器来访问其它服务器。建立虚拟目录增加了配置难度,但其提供我们实际部署要求下的镜像服务。如果只访问本地服务,那实在是微不足道。然而,当需要访问其他服务器上的资源时,我们必须要考虑安全验证的方法、应用程序池的用户属性集和内部共享资源的设计。我们还将设想一个擂台,将坎伯洛身份验证与授权委托认证的优缺点进行对比,看最后谁得分更高。
        由于IIS在不同工作方式具有不同的特性,我们使用多种不同的身份验证机制来实现上述对比。据我了解,很多人在IIS验证都会感到困惑,甚至在设计访问模型时发生错误。因此,本例首先简单简介一个设计方案,之后,在这个方案上建立一个新方案。这样,我们就了解了为了满足设计要求而必须要做什么。在每一步中,我们都会举例来说明验证机制如何工作以及何种状况下不工作。了解何时不工作同何时工作一样重要。
访问概述
        我们将在Web服务器上建立访问虚拟目录,用户登录后可通过其访问数据。我将用一个简单而直接的例子来说明,重点说明在我们web应用程序访问安全下如何,为什么进行身份验证及应用程序池的用户属性集。我们暂时不简介EFS。虽然这里举了一个简单的示例,但对于那些不太熟悉IIS身份验证的人来说,验证过程中的用户属性集的细节可能会有一些困惑。事实上,我已经见过好多已经成功部署的使用扫描及超权访问的实例,而那些都是没有完全了解模型的结果。
图2.11第一步,简单设计说明
Web访问与认证
        在本例中,我们设计要求为已授权用户通过HTTPS方式来访问互联网数据。我们假设两个用户,我们称呼他们为史蒂夫与格雷格,他们使用各自的浏览器来访问互联网数据。他们两人登录后可以查看各自的目录和文件,但我们不希望史蒂夫能够查看格雷格的内容,当然不希望格雷格访问史蒂夫的内容。服务器为每个用户配置了虚拟目录,均指向各自的独立文件服务器的网络文件夹。接下来,你将会看到在不同的服务器上建立虚拟文件夹的意义是多么的重要。
这里使用三个登录属性:用户自己(史蒂夫和格雷格),万维网发布服务(IIS),和我们的网站(或网站应用程序)应用程序池。应用程序池会将各自的身体验证程序相互隔离开,并允许池之间设置不同的参数配置。当您在IIS中创建一个网站,应用程序池会自动加载,作为一个默认名为身份运行DefaultAppPool属性,或者说是应用程序池身份ID。
        这里说明一下,因为即使IIS服务作为本地系统运行,通常的网站都是运行在不同验证的用户属性集下。这不仅更安全,而且它允许您指定不同用途的不同身份验证来针对不同的应用程序池。示例中可能将应用程序相互分开,这是为了能够使不同权限的用户访问数据。
        如果我们将数据直接存储在Web服务器上,那么我们的工作将是容易的,因为我们可以使用默认的网站和应用程序池设置。可是我们想建立我们的网站,配置我们想要访问文件夹的虚拟目录,验证访问这些文件夹的用户权限,并设置适当的NTFS权限。图2.12为配置示例。
测试访问连接
        当格雷格通过URL访问其自己的目录时,会首先提示其登陆,之后浏览器会出现如图2.13类似的显示:
        可以看到格雷格已经找到他的MIDI文件,并可以下载。史蒂夫的配置与之相类似,如图2.14.
        测试链接的结果如图2.15所示。
        正如预想的那样,我们看到了史蒂夫的文件,包括望远镜手册——从我这里借走的,至今未还。此IIS身份验证模型里,两个不同的帐户,需要获得相应的权限才可以访问各自的文件夹。视窗用户必须获得相应权限才能读取各自的文件及文件夹。在默认的应用程序池用户权限下,对于整个系统的用户已经获得了读取文件目录的权限,而不是我们举例的史蒂夫和格雷格两个人。


本文为参加《雷神的微软平台安全宝典》翻译活动而翻译的参赛文章。

活动说明链接:

http://blog.csdn.net./blogdevteam/article/details/7568876


感谢CSDN组织活动,感谢清华大学出版社提供文章。