【发布时间】:2011-01-01 07:54:17
【问题描述】:
我有一个 ASP.NET 3.5 Web 服务(旧式 SOAP,而不是 WCF)在 IIS 6.0 中设置相同的两台服务器上运行。身份验证/访问控制设置如下:
- 启用匿名访问 = False
- 集成 Windows 身份验证 = True
- Windows 域服务器的摘要式身份验证 = False
- 基本身份验证 = 假
- .NET Passport 身份验证 = False
在其中一种网络方法中,我需要获取请求用户的身份并验证它是否在某个 Active Directory 组中。所以,web方法的第一行代码是这样的:
var requestUser = HttpContext.Current.Request.LogonUserIdentity.Name;
由于某种原因,两台服务器的结果不同。 Server1 按预期工作,产生domain\UserId。但是,Server2 生成 Server2\IUSR_SERVER2。有谁之前经历过这个吗?我确实找到了this question,但我很确定它不适用于客户端,并且两台服务器都在同一个域中。
附加信息
根据 Heinzi 的回复,我在两个 web.config 文件的 <system.web> 部分添加了以下内容:
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
现在,Server1 的行为与我想要的一样。但是,Server2 抛出 401.2: Unauthorized 错误:
“/”应用程序中的服务器错误。
访问被拒绝。 说明:访问处理此请求所需的资源时出错。服务器可能未配置为访问请求的 URL。
错误消息 401.2.:未经授权:由于服务器配置,登录失败。根据您提供的凭据和 Web 服务器上启用的身份验证方法,验证您是否有权查看此目录或页面。如需更多帮助,请联系 Web 服务器管理员。
版本信息:Microsoft .NET Framework 版本:2.0.50727.3603; ASP.NET 版本:2.0.50727.3053
【问题讨论】:
标签: asp.net web-services authentication iis-6