遇到一点麻烦,我想知道你们所有人的建议。 感谢您的投入。
我们有一个ASP.NET网站,其中一个功能是该网站允许用户上传文件,然后服务器将它们保存到UNC路径。
我们的部分用户无法上传文件。我认为这可能是安全问题,因为这些用户位于不同的域中,因此无法访问UNC路径到哪里 系统正在尝试保存文件。
该网站使用Windows身份验证来验证用户。 文件服务器和Web服务器是两台独立的计算机,但位于一个域中 用户来自其他域
系统正在使用System.Web.HttpPostedFile.SaveAs(String SaveLocation)
保存文件
我无法弄清楚为什么没有使用AppPool的设置保存文件 以及如何配置此不要尝试使用客户端凭据来保存文件。
编辑: 我认为如果它是由应用程序池控制的,那么我们的所有用户都会遇到麻烦。但它似乎只是域外的文件服务器。
有什么想法吗?
感谢您的见解。
答案 0 :(得分:1)
你的web.config中有<identity impersonate="true" />
吗?
如果是,您使用客户端用户凭据保存该文件;在这种情况下,如果您只使用应用程序池帐户并使用适当的文件系统权限授予它,则可能会更好。
您可以定义凭据this way:
<identity impersonate="true"
userName="domain\username"
password="password"/>
答案 1 :(得分:1)
在IIS下
Properties-->Directory Security-->Authentication Access and Control
在“启用匿名访问”框中,将用户名更改为具有访问权限的域帐户
详细说明,应用程序池是进程运行的帐户,“身份验证访问和控制”帐户是匿名用户实际运行的用户名。这是有道理的,因为您的域用户(可能使用集成身份验证)已经具有访问权限。
修改强> 这也是一个漂亮的形象:
答案 2 :(得分:0)
您可以尝试在应用程序池设置中配置具有足够权限写入UNC共享的固定标识。