IIS站点访问多个资源服务器的解决方案

来源:互联网 发布:linux系统加固 编辑:程序博客网 时间:2024/06/15 14:28
解决IIS服务器访问其他服务器共享文件的方案




当网站需要使用的视频、图片等资源不在本地IIS服务器上,有又不想每次都把需要使用的资源更新到IIS服务器上,可以使用一下方案解决,大致描述就是在IIS站点下添加虚拟目录来引用资源服务器上的视频、图片等;




1、准备工作:
资源服务器为 ShareServer,IP地址为:192.168.100.1;
IIS服务器为 WebServer,IP地址为:192.168.100.2


详细步骤:


一、共享账户的建立


1.在 WebServer 上建立一个用户名,方便使用该用户读取 ShareServer 上的共享目录,为了web文件能正常运行,同时又避免使用户拥有过高的权限,我们可以直接把该用户归入 Guests(win2003中) 组,或者 IIS_IUSRS(win2008中) 组内,这样就一举多得了。我这里建立的用户名为 IIS_ShareUser ,密码为 123456;


2.在 ShareServer 中也建立一个同名同密码的用户(必须一致,否则在UNC验证的时候会无法登陆)。这里用户名也应该为 IIS_ShareUser ,密码为 123456,也归入Guests组中;


二、共享位置的建立


1.ShareServer 中使用文件夹共享工具,共享出一个目录,共享名为 public ,共享权限设置为 Administrators 组 读取+写入,IIS_ShareUser 用户 读取(如果需要存东西,就加上 写入 权限);


这里 Administrators 用户必须拥有 读取+写入 权限,否则在 WebServer 里使用IIS直接设置的时候会提示无法保存设置。


共享位置的文件夹安全设置也必须加入 IIS_ShareUser 的 读取运行 权限,另外还需要加入IIS进程用户的 读取运行 权限,这里不再描述运行IIS站点所需要的 文件夹安全 权限设置。


三、IIS中引用共享目录


1.WebServer 中IIS里建立站点或虚拟目录,路径指向//192.168.100.1/public ,连接认证用户手动输入为 IIS_ShareUser ,密码 123456。


当第1步完成的时候,您已经通过web方式访问该站点或虚拟目录中的来自 ShareServer 共享目录的资源,但是 ASP.Net 还没有权限执行。


2.ASP.Net的权限设置


从站点根目录下打开 web.config 文件,在 <system.web> 节点以内,加入以下内容:


<identity impersonate="true" userName="IIS_ShareUser" password="123456" />


其实就是修改了 ASP.Net 执行的认证方式,把认证方式修改为 ASP.Net模拟用户 ,这样就能让 ASP.Net 通过刚才建立的共享账号执行和访问 ShareServer 中的资源了。




附注:


1.本文中的ASP.Net权限设置内容中,直接把用户和密码都写入 web.config 文件内,这样做安全性不是很好,可以使用以下方法提高安全性:


从微软下载工具 aspnet_setreg.exe (附送下载地址:http://download.microsoft.com/download/2/9/8/29829651-e0f0-412e-92d0-e79da46fd7a5/aspnet_setreg.exe) 下载后请解压,这是一个压缩包。


在 WebServer 中使用 aspnet_setreg.exe 执行以下指令:


aspnet_setreg.exe -k:SOFTWARE\AspNetIdentityAPP\identity -u:"IIS_ShareUser" -p:"123456"


备注:这里的AspNetIdentityAPP\identity 可以根据你个人的爱好来设置,只要在读取的地方对应就行了。


成功执行后打开注册表编辑器,打开目录 HKLM\SOFTWARE\AspNetIdentityAPP\identity 会看到 userName 和 password 已经被系统加密了。


我们需要授予IIS进程用户权限,以方便IIS用户读取这个加密后的配置,右键-->权限,加入 NetWork Service组(如果是WIN2003以下版本,IIS进程用户应为ASPNET) 读取 权限。


打开站点根目录下的 web.config ,把 <identity impersonate="true" userName="IIS_ShareUser" password="123456" /> 替换为


<identity impersonate="true" userName="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\AspNetIdentityAPP\identity\ASPNET_SETREG,password" />


保存退出即可,这样就完成了整个过程,安全性也得到了提升。








可能存在的问题;
当按照上述操作后还是无法访问资源服务器的时候,
出现 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 这样的问题时可以进行如下操作:


给C:\Windows\temp 文件夹赋予完全控制权限,如下操作:打开C:\Windows\temp文件属性,在安全中找到IIS_IUSRS用户,为此用户添加对应的读写权限;


其他的解决方案均没有成功如: 1 设置c:windows\temp 目录访问权限 temp--> 属性-->安全-- > 添加network service -->并赋予其权限为 读 和 写--> 确定


(注意:操作系统为windows server2003 framework 版本在 1.1及以上)





参考转载自http://blog.csdn.net/luxiaoyu_sdc/article/details/6773331



0 0
原创粉丝点击