用SharePoint 做门户网站是个很好的解决方案,而门户网站的一大特性就是让互联网所有人都可以访问,在SharePoint里开启匿名访问功能就能到达这个目的。
而开启了匿名访问,外部用户就有可能访问到网站提供者并不希望他们看到的内容,比如表单页面,后台页面,web服务(http://server/pages/forms/allItems.aspx,http://server/_layouts/viewlsts.aspx, _vti_bin 等等)。
为了提高门户网站的安全性,限制用户的访问范围,可以通过代码开发,比如在httpmodule设置规则限制用户访问的页面,也可以通过SharePoint自带的feature来控制,
本文只介绍第二种方法:
开启ViewFormPagesLockDown功能
-
先关掉目标站点的匿名访问功能。
-
打开CMD,导航到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN。
-
输入命令 get-spfeature -site <http://site> , 如果ViewFormPagesLockDown被列出来,说明已经开启了。
-
如果没列出来,输入命令stsadm -o activefeature -url <http://site> -filename ViewFormPagesLockDown\feature.xml
-
再开启目标站点的匿名访问功能。
说明:微软在界面上并没有提供修改匿名用户具体权限的操作,通过上面的命令可以移除匿名用户的view application pages的权限。
配置web.config
打开目标站点的web.config文件,加入下面的片段:
<add path="configuration">
<location path="_layouts">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="_vti_bin">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/login.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/error.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/accessdenied.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>