Asp.net 使用IIS时,什么会导致用户名不正确&;Windows身份验证?
我当前遇到一个问题,一些用户使用的ASP.NET 4.8 Web API应用程序托管在Windows Server 2012和IIS上。以下属性不会返回该用户的正确用户名,而是返回用于此服务器的服务帐户的名称:Asp.net 使用IIS时,什么会导致用户名不正确&;Windows身份验证?,asp.net,windows,authentication,iis,Asp.net,Windows,Authentication,Iis,我当前遇到一个问题,一些用户使用的ASP.NET 4.8 Web API应用程序托管在Windows Server 2012和IIS上。以下属性不会返回该用户的正确用户名,而是返回用于此服务器的服务帐户的名称: HttpContext.Current.User.Identity.Name HttpContext.Current.Request.LogonUserIdentity.Name 我不知道如何对此进行故障排除-我自己和大多数其他用户都没有遇到此问题,但对于少数用户,上面的操作没有返回
HttpContext.Current.User.Identity.Name
HttpContext.Current.Request.LogonUserIdentity.Name
编辑:我能够解决问题,请参见下面的我的答案请检查以下步骤:
请检查以下步骤:
经过一些额外的研究和故障排除,我确定遇到上述问题的用户的服务帐户存储在Windows凭据管理器中:
删除有问题的服务帐户允许他们使用正常的Windows domain\username通过Intranet站点进行身份验证。正如@pcalkins所建议的,在某个时候,受影响的用户在他们的机器上使用了这些凭据,而Chrome、Edge、IE在使用Intranet站点进行身份验证时正在使用保存的凭据。经过一些额外的研究和故障排除,我确定遇到上述问题的用户将有问题的服务帐户存储在Windows凭据管理器中:
删除有问题的服务帐户允许他们使用正常的Windows domain\username通过Intranet站点进行身份验证。正如@pcalkins所建议的,在某个时候,受影响的用户在他们的计算机上使用了这些凭据,而Chrome、Edge、IE在使用Intranet站点进行身份验证时使用了保存的凭据。我相信它将使用仅http的cookie来获取登录详细信息。(将浏览器会话与域登录绑定。)听起来好像这些用户的计算机上使用了此服务帐户登录,他们从该会话中保存了cookie。因此,一旦他们删除该cookie,当他们访问该站点时,将提示他们进行域登录。@pcalkins谢谢-我在这些用户的计算机上没有看到HttpOnly cookie,即使在清除了所有cookie和其他数据之后,这个问题似乎仍然存在。我在下面的另一条评论中提到,我已经与MS打开了一个支持票证,我将在这里更新他们的发现和/或解决方案。我相信它将使用仅http的cookie来获取登录详细信息。(将浏览器会话与域登录绑定。)听起来好像这些用户的计算机上使用了此服务帐户登录,他们从该会话中保存了cookie。因此,一旦他们删除该cookie,当他们访问该站点时,将提示他们进行域登录。@pcalkins谢谢-我在这些用户的计算机上没有看到HttpOnly cookie,即使在清除了所有cookie和其他数据之后,这个问题似乎仍然存在。我在下面的另一条评论中提到,我已经向MS申请了支持票,我将在这里更新他们的发现和/或解决方案。谢谢。IIS中的站点和应用程序都禁用了匿名身份验证并启用了Windows身份验证。用户通常不使用Internet Explorer,但我与一位用户确认,已选中“启用集成Windows身份验证”,并已使用“自动登录…”选项将站点添加到本地Intranet区域,但问题仍然存在。用户和应用服务器位于同一个域上。我正在就此向MS申请支持,我将在这里更新我的发现和/或解决方案。谢谢。IIS中的站点和应用程序都禁用了匿名身份验证并启用了Windows身份验证。用户通常不使用Internet Explorer,但我与一位用户确认,已选中“启用集成Windows身份验证”,并已使用“自动登录…”选项将站点添加到本地Intranet区域,但问题仍然存在。用户和应用服务器位于同一个域上。我正在就此向MS申请支持,我将在这里更新我的发现和/或解决方案。