【问题标题】:ADFS 2.0 - How can I Debug "401 - Unauthorized"ADFS 2.0 - 我如何调试“401 - 未经授权”
【发布时间】:2011-10-05 16:26:20
【问题描述】:

我使用 Active Directory 和 ADFS 2.0 设置了一个测试 Server 2008 机器。我有一个使用 WIF 来联合身份的 ASP.NET 应用程序。 ADFS 配置为使用 Active Directory 获取身份信息。我使用 WIF 将客户端应用程序配置为使用 ADFS 端点。

当我尝试以用户身份从浏览器加载 ASP.NET 应用程序时,我被重定向到 ADFS 端点并提示输入凭据。我尝试使用多个用户帐户登录,甚至重置密码,但凭据似乎永远不正确,并返回 401 Unauthorized。我可以使用相同的凭据成功登录其他系统。

我已在详细模式下启用调试跟踪并在详细模式下启用审核,但我找不到任何错误或信息来帮助我找出问题。

如何获取更多信息以缩小问题范围?

更新:

我发现这个问题是由我的测试环境引起的。我的开发机器位于我们的公司域 (acme.com) 上。我为测试域控制器 (notacme.com) 和 Web 服务器创建了两个 2008R2 虚拟机。

如果我尝试从 acme.com 域上的计算机访问该网站,则会出现上述错误。如果我尝试从 notacme.com 域上的计算机访问该网站,它可以工作。

如何从 acme.com 域上的计算机访问该网站?

【问题讨论】:

  • 您的 ADFS 身份验证模式是如何配置的?表单还是集成?
  • 我认为它是为集成配置的。如何确定?
  • 集成模式在 IE 以外的浏览器中不起作用。您可以检查 adfs Web 应用程序的 web.config 文件中的配置,该文件通常位于 microsoft.identityServer 配置部分的 C:\inetpub\adfs\ls 中。
  • 我使用的是 Internet Explorer 8。

标签: active-directory wif adfs2.0


【解决方案1】:

这显然是由 ADFS 内置的扩展保护功能引起的。在尝试解决此问题时,我让 Fiddler 运行以跟踪请求/响应,但有一次我发誓我也将其关闭以进行测试,但它仍然无法正常工作。显然我没有完全删除 Fiddler 代理,因为在 IE 重新启动并且 Fiddler 未运行后,它在 IE 中运行,但在 Firefox 或 Chrome 中仍然无法运行。这让我看到了一篇 TechNet 文章,该文章描述了我在使用 Fiddler 时所看到的行为。

http://social.technet.microsoft.com/wiki/contents/articles/ad-fs-2-0-continuously-prompted-for-credentials-while-using-fiddler-web-debugger.aspx

【讨论】:

    【解决方案2】:

    根据我的经验,IIS(包括 AD FS)中的每次登录失败都会作为“审核失败”事件记录在“安全”事件日志中,其中包含更多详细信息。所以我会在 AD FS 系统上的事件查看器中进行搜索,看看这些事件有什么要说的。同样在事件查看器中,检查“应用程序和服务日志”->“AD FS 2.0”->管理事件日志。

    您似乎确实尝试过查看 HTTP 流量,例如,使用 Fiddler。那挺好的。我想不使用 Fiddler 时也会出现问题?

    (是不是你输入了正确的用户名和密码后出现重复登录的问题?那就看下面的答案:ADFS authentication - IE8 works, Chrome fails。)

    (我还看到初始身份验证成功的情况,导致“审核成功”事件,然后由于稍后的重定向导致 401。同样在这种情况下,事件登录AD FS 系统提供了帮助。)

    【讨论】:

    • 我没有在这些日志中看到任何故障。有什么想法吗?
    • 所以您在 AD FS 系统的安全事件日志中看不到“审核成功”和“审核失败”事件,对应于您尝试登录失败的时间?如果是这样,那我就亏大了。根据我的经验,这些事件总是存在的,至少如果 AD FS 安装正确(看起来是这样,因为看起来您从另一个 Web 应用程序成功使用了同一个 AD FS 实例)。此外,按照建议,查看 HTTP 流量。
    • 不,我看到了审核成功消息。如果我输入了错误的密码,我会看到审核失败。我还看到了 Kerberos 服务票证操作和 Kerberos 身份验证服务事件。无论哪种方式,我都会不断收到凭据输入弹出窗口和 401。
    • 在 Fiddler 中,无论我是否输入有效凭据,请求的 URL 都不会改变。
    • 也许(只是也许)您的浏览器不发送 cookie?主机名中是否有下划线,导致 IE 不发送 cookie?无论如何,如果您可以在某处发布 Fiddler 跟踪,我会看看它。
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2018-05-19
    • 2020-06-11
    • 2017-02-22
    相关资源
    最近更新 更多