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

Error 401.3 not authorized when NOT using impersonation

我正在尝试访问托管在 IIS 中的老式 asmx Web 服务,但我正在努力应对 401.3 错误。我知道那里有很多资源,但其中大部分都使用模拟并通过为授权用户向文件系统添加权限,我想避免这种情况。

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

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

我已经尝试为自己添加对文件夹的读取和执行权限,一切正常,但这显然不是一个合适的解决方案,因为我必须继续管理文件夹权限。

我的问题是:为什么经过身份验证的用户需要访问文件夹?该文件夹不是作为应用程序池标识访问的吗?模拟被禁用,所以我希望这是正确的行为。

why does the authenticated user needs folder access?

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

Isn't the folder accessed as the app pool identity

是的,但是上面的模块还会检查经过身份验证的用户。您提到您将 Anonymous 设置为使用 AppPoolIdentity,所以我希望在您的情况下,这是真的。

Impersonation is disabled so I would expect that to be the proper behaviour.

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

关于如何排除故障的建议是获取 ProcMon 跟踪,我怀疑您会看到一些 AccessDenied。去看看什么进程需要什么权限,看看它是否在做模拟(为了这个检查)。这会告诉你什么权限是 missing/failing.