不使用模拟时未授权错误401.3

时间:2019-06-14 15:19:27

标签: asp.net iis authorization asmx impersonation

我正在尝试访问IIS中托管的老式asmx Web服务,并且我为解决401.3错误而烦恼。我知道那里有很多资源,但是其中大多数资源都是通过模拟来实现的,并且通过向文件系统添加授权用户的权限来实现。

我的方案基本上是一个IIS Web服务,与作为特定服务帐户(DOMAIN \用户名+密码)运行的AppPool一起运行。该服务帐户对文件夹具有完全控制权,并且Anonymous身份验证设置为使用AppPool身份。

这一切都很好并且可以正常工作,但是现在我想通过添加Windows身份验证来保护我的Web服务。我这样做了,并在授权部分添加了一个简单的<deny users="?" />。现在发生的是,当我连接到服务器时,要求我输入用户名和密码,然后提供一个,然后出现401.3错误。

我尝试将自己的读取和执行权限添加到该文件夹​​中,并且一切正常,但这显然不是一个正确的解决方案,因为我必须继续管理文件夹权限。

我的问题是:为什么经过身份验证的用户需要文件夹访问权限?文件夹不是作为应用程序池标识访问的吗?模仿已禁用,因此我希望这是适当的行为。

1 个答案:

答案 0 :(得分:1)

  

为什么经过身份验证的用户需要文件夹访问权限?

FileAuthorization模块要求经过身份验证的用户具有对该文件的权限。

  

不是作为应用程序池标识访问的文件夹

是,但是上面的模块还检查了经过身份验证的用户。您提到您已经设置了使用AppPoolIdentity的Anonymous,所以我希望您的情况是对的。

  

模拟被禁用,所以我希望这是正确的行为。

这是独立的,因为无论如何FileAuthorization模块都会启动。

通过故障排除的建议是抓住ProcMon跟踪,我怀疑您会看到一些AccessDenied。看一下,看哪个进程需要什么权限,看看它是否在模仿(针对此检查)。这将告诉您缺少/失败了哪些权限。