多个浏览器窗口上的ADFS身份验证

时间:2015-12-18 16:04:49

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

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

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

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

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

非常感谢提前

1 个答案:

答案 0 :(得分: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以再次强制执行新的身份验证。但考虑到铬行为,我认为不是这样。

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

如果您需要在收到论坛回复的同时急切深入了解此问题,请向微软提出诉讼。