0

我有一个 webapp,它是一个 .NET 4,在 Server 2008 上的 IIS 7.5 上运行的 webforms 应用程序。最近,显然偶尔会出现试图在 mac 上使用该应用程序的用户,并显示错误页面:

401 Unauthorized - 由于凭据无效,访问被拒绝。您无权使用您提供的凭据查看此目录。

该页面不提供任何进一步的信息或子状态代码。我检查了 IIS 错误日志以获取更多信息,并发现这个问题似乎确实是 Mac 上最常见的 Safari 上的用户所独有的,但它也发生在其他浏览器(如 Firefox)上。这些日志中再次没有提供子状态代码。

提供的错误消息似乎与 401.1 一致,但是我使用的是表单身份验证而不是 Windows 身份验证。我自己无法重现这一点,目前它显然对用户来说是随机发生的,并且在一组特定步骤之后不一致。

当用户在应用程序中或尝试登录时会发生此错误,我认为这与他们输入无效凭据无关,因为我有验证来处理该错误,并且可能发生在已登录应用程序的用户身上。

由于我无法重现该错误,我不知道如何解决这个问题,我想要一些关于这方面的指导以及你们可以提出的任何解决方案或想法。如果需要更多信息,请告诉我,我可以更新问题。

编辑:

我有一个想法,可能是 Mac 上的某些配置导致在不需要时发送 WWW-Authenticate 标头,但是在使用 TamerData 添加标头后,我发现我仍然无法复制该问题。IIS 中的所有身份验证都被禁用,匿名和表单除外。

编辑2:

我现在已经能够成功重现该问题,当未经身份验证的用户尝试使用 ?ReturnUrl=value 参数访问受保护的页面时会发生此问题。这将导致 IIS 显示上述错误页面。我可以通过在任何未经身份验证的尝试访问受保护页面并将用户重定向到 Begin_Request 中的登录页面时删除 ReturnUrl 参数来修复此行为。

然而,这个问题最常报告在用户刚登录立即重定向到的页面上。因此,由于某种原因,当用户实际上经过身份验证时,仍然会收到 401 错误。知道为什么会这样吗?

4

0 回答 0