我创build了一个指向networking共享的虚拟目录(IIS 7.0)。 这个虚拟目录位于我的Web应用程序根目录下。
我尝试使用匿名访问与域凭据。 另外,我尝试使用模拟如下…
<identity impersonate="true" userName="<supplied username>" password="<supplied password>" />
问题:应用程序始终使用IUSR连接到该共享并获得“访问被拒绝”。 我需要强制我的应用程序使用上面的域名。
更新
1.运行procmon时,我可以在拒绝访问之前每次看到“FAST IO DISALLOWED”消息。 不太确定它是否相关。
我怀疑双跳问题的症状。 但不知道如何真正validation它或如何绕过它,而不真正改变Kerbros的身份validation。
谢谢!
首先,“模仿”是指只在同一台机器上应用的术语,如果你的networking共享(或者IIS,或者虚拟目录,或者MS SQL Server等)在另一台计算机上,那么它就是委托,你应该configuration它在计算机之间(读取SPN,服务主要名称)。
你的networking是共享在同一台计算机还是不同的计算机上?
然后,它不是“双跳”,因为您不会传递您的webapp用户的原始身份,而是在web.config中使用固定的模拟。
我希望它不是在生产? 这个,把证书放在web.config中,是EVIL,EVIL,EVIL,千万不要这样做,只是不要!
顺便说一句,你可以达到相同的结果没有固定的模拟在web.config通过运行你的web应用程序在你的域用户下的自定义应用程序池,比较。 [1]。 这更容易,可configuration和可靠。
我本来可以试着给你写所有可能的案例的说明,因为在你的文章中确切的上下文是模糊的,但它会以几十页的不可读的文章结束。
好,我开始写:
禁用“匿名访问”并启用IIS中的“基本身份validation”(网站属性)
更改
<authentication mode="None" />
至
<authentication mode="Windows" />
在web.config
在Windows资源pipe理器中禁用“使用简单文件共享” – >菜单工具—>文件夹选项… —>选项卡视图
为networking共享上的用户名授予权限
确保所有涉及的交互式计算机上都启用了NTLM
请阅读并遵循[2]中的说明。
我无法findIIS7 / W2006相同质量的描述,但我坚信你所需要的不会改变。
如果您还有其他问题或疑问,请发表更具体的问题。
—– 引用:
[1]
如何:为ASP.NET 2.0应用程序创build一个服务帐户
http://msdn.microsoft.com/en-us/library/ms998297.aspx
[2]
如何在ASP.NET 2.0中使用模拟和委派
http://msdn.microsoft.com/en-us/library/ff647404.aspx