【问题标题】:Basic Authentication with ASP.Net Web Services on IIS7.5 in Classic Mode在经典模式下在 IIS7.5 上使用 ASP.Net Web 服务进行基本身份验证
【发布时间】:2011-12-19 23:45:26
【问题描述】:

我已经使用 .Net 4 实现了带有基本身份验证的 Web 服务。为了实现基本身份验证,我实现了 HttpModule。当我通过 Internet Explorer 调用我的 Web 服务时,它会提示输入用户名密码,我输入有效的用户名/密码,它工作得很好。

但是,当我在开发环境中部署 Web 服务并在 Internet Explorer 中调用我的服务时。这给了我用户提示;我输入了有效的用户名/密码,但它一直提示我用户名/密码,最终在尝试三次后我收到错误消息 401.2 - 访问被拒绝。

我的身份验证设置是:

 Anonymous Access Enabled
 Basic Authentication Disabled
 Windows Authentication Disabled

每次用户通过身份验证时,我都会在我的 HttpModule 中记录身份验证是否成功。我可以在日志文件中看到,所有 3 次身份验证都成功。但它仍然出错。 :(

顺便说一句,如果我在集成模式下运行 Web 服务,它就可以正常工作。不幸的是,我的要求是以经典模式运行 Web 服务。

环境详情: 操作系统:Windows Server 2008 R2, IIS:7.5 经典模式

从过去 4 天开始,我一直被这个问题困扰。请帮忙!

【问题讨论】:

  • 我在使用 Web 服务时遇到了类似的问题,但我的是在我自己的机器上。我能够调试 web 服务,发生的事情是基本身份验证标头在到达 web 服务 IHttpHandler.ProcessRequest 代码之前已从请求中删除。想必是 IIS 这样做的,但是我尝试了很多 IIS 设置更改都无济于事。

标签: asp.net web-services iis-7.5 basic-authentication


【解决方案1】:

说我疯了,但你不是必须有Basic Authentication Enabled 才能成功验证任何人吗?

【讨论】:

  • 我知道人们会问这个问题。 :) 它必须保持禁用状态
【解决方案2】:

我猜你打开了身份模拟和匿名,这导致你的 ASP.Net 应用程序作为“IUSER_”帐户执行。 “IUSER_”帐户无权访问您尝试访问的特定资源(可能是 API 调用、文件、bla、bla)。

如果您确实关闭了身份模拟并打开了匿名,那么您的 ASP.Net 代码应该作为应用程序池帐户运行。这意味着该帐户无权访问您尝试访问的特定资源(bla、bla、bla)。

Here is an old skool MSDN article that discusses IIS and ASP.Net security。就像我提到的那样,它已经过时了,但这些概念仍然是正确的。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多