【问题标题】:ADFS authentication on multiple browser windows多个浏览器窗口上的 ADFS 身份验证
【发布时间】:2016-03-25 09:29:09
【问题描述】:

我正在开发一个 MVC5 应用程序,该应用程序已配置为使用 ADFS 作为身份提供者,而 Web 应用程序充当依赖方。就身份验证而言,该应用在 IE9 和 Chrome 上的行为有所不同。

当我第一次在 IE9 上运行应用程序并转到要求用户进行身份验证的页面时,IE 要求我按预期进行身份验证。但是当我启动一个新的 IE9 窗口并导航到同一页面时,IE 会要求我再次进行身份验证,这是不应该的,因为它应该知道我已经登录。但是这不会在 Chrome 上发生,即 Chrome 的第二个实例知道我已经登录了。

同样,在 IE9 上,当我在一个实例上注销应用程序时,另一个实例认为我仍在登录,而当我运行两个 Chrome 实例并在一个实例上注销时,另一个实例知道我已注销.

如何让 IE9 的行为与 Chrome 相同?这是 ADFS 上的一些配置问题,还是我需要在应用程序中添加更多服务器端代码以确保 IE9 正常运行?

在此先感谢

【问题讨论】:

    标签: c# asp.net-identity identity wif adfs


    【解决方案1】:

    它不是 AD FS。它需要调查的 IE 浏览器配置。我建议您在使用两个 IE 窗口进行复制时使用 fiddler 跟踪。

    我假设您指的是 AD FS 2.x 或 2012 R2。当 AD FS 对用户进行身份验证时,如果凭据有效,它会写入 MSISAuth cookie。 WIF 应用使用来自 AD FS 的令牌并写入 FedAuth cookie。

    当第二个浏览器窗口访问应用程序时,如果它没有收到 FedAuth cookie,它将通过重定向到 AD FS 来启动请求身份验证的流程。如果 AD FS 没有收到 MSISAuth cookie,它将导致客户端再次进行身份验证。

    听起来第二个浏览器窗口没有使用相同的 cookie 存储,因此不知道 FedAuth 和 MSISAuth cookie。

    我怀疑这就是这里发生的事情。 我假设您正在运行 IE 和 Chrome 的 PC 上进行测试。您没有过多提及浏览器操作系统/配置,所以我不知道这些是来自场的终端服务器发布的应用程序(在场中的终端服务器上有多个浏览器实例)还是安装在 PC 上的简单浏览器。

    还有其他原因导致出现另一个信用提示。您可以通过禁用 SSO 或配置 RP 相关的身份验证策略以坚持全新身份验证,将 AD FS 配置为再次强制全新身份验证。但考虑到 chrome 的行为,我认为不是这样。

    我们需要查看 fiddler 跟踪和浏览器配置以更具体地回答。

    如果您需要在收到论坛回复之前尽快查明此事,请向 Microsoft 提出案例。

    【讨论】:

    • 如果我没记错的话,IE 从不在单独的窗口之间共享 cookie,cookie 仅在同一窗口中的选项卡之间共享。那么这里的IE没有问题。
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多