我已经使用.Net 4实现了基本身份验证的Web服务。为了实现基本身份验证,我实现了HttpModule。当我通过Internet Explorer调用我的Web服务时,它会提示输入用户名密码,我输入有效的用户名/密码,它完全正常。
然而,当我在Dev Environment上部署我的Web服务并在Internet Explorer中调用我的服务时。这给了我用户提示;我输入有效的用户名/密码,但它一直提示我输入用户名/密码,最后三次尝试后我收到错误消息401.2 - 访问被拒绝。
我的身份验证设置为:
Anonymous Access Enabled
Basic Authentication Disabled
Windows Authentication Disabled
在每次用户身份验证时,在我的HttpModule中,如果身份验证成功,我会记录。我可以在日志文件中看到,所有三次身份验证都成功了。但它仍然错误。 :(
顺便说一句如果我在集成模式下运行Web服务,它可以正常工作。不幸的是,我的要求是以经典模式运行Web服务。
环境详情: 操作系统:Windows Server 2008 R2, IIS:7.5经典模式
过去4天我坚持这个。请帮忙!
答案 0 :(得分:1)
叫我疯了,但是你不必让Basic Authentication Enabled
成功验证任何人吗?
答案 1 :(得分:0)
我猜你已经启用了身份模拟并且匿名启用了导致您的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。就像我提到的那样,它很老,但概念仍然是真的。