C# 使用Internet Explorer从Yahoo返回的两个OpenID身份验证响应

C# 使用Internet Explorer从Yahoo返回的两个OpenID身份验证响应,c#,asp.net,openid,dotnetopenauth,yahoo-api,C#,Asp.net,Openid,Dotnetopenauth,Yahoo Api,我正在开发一个应用程序,允许用户使用ASP.NETMVC4和DotNetOpenAuth库通过OpenID使用Google和Yahoo登录和注册。谷歌运转良好,雅虎几个月来一直运转良好,直到几天前 出于某种原因,使用我的本地版本IE11,在与Yahoo进行身份验证后,两个响应被发送回web服务器,并且每个响应都在其各自的线程中进行验证。一个响应被确定为有效,而另一个响应被确定为无效,因为第一个响应已经过验证。然后将响应发送回用户,根据先发送哪个响应,可能会出现两种截然不同的结果 使用Chrome

我正在开发一个应用程序,允许用户使用ASP.NETMVC4和DotNetOpenAuth库通过OpenID使用Google和Yahoo登录和注册。谷歌运转良好,雅虎几个月来一直运转良好,直到几天前

出于某种原因,使用我的本地版本IE11,在与Yahoo进行身份验证后,两个响应被发送回web服务器,并且每个响应都在其各自的线程中进行验证。一个响应被确定为有效,而另一个响应被确定为无效,因为第一个响应已经过验证。然后将响应发送回用户,根据先发送哪个响应,可能会出现两种截然不同的结果

使用Chrome和Firefox可以正常工作。雅虎只回复了一个回复。在其他机器(包括11台)上使用不同版本的IE也能正常工作。使用fiddler,我验证了发送的请求是否正确。我尝试过清除缓存,禁用任何插件,并使用开发工具更改文档和浏览器模式,但没有成功。是否有任何东西会导致两个响应被发回

发送请求的基本代码如下。配置文件正在使用所有默认值

OpenIdRelyingParty openid = new OpenIdRelyingParty();
IAuthenticationRequest request = openid.CreateRequest(Identifier.Parse("https://me.yahoo.com"));

var fields = new ClaimsRequest();
fields.Email = DemandLevel.Require;

request.AddExtension(fields);

return request.RedirectingResponse.AsActionResult();

事实证明,问题在于我发送了一个请求,要求Yahoo在身份验证后重定向回未加密的连接。如果我告诉Yahoo返回https url,而不是http,那么一切都正常工作,我只收到一个返回应用程序的请求。

据我所知,这似乎不是DNOA的问题。你有没有试过在IE中调试,看看为什么它会两次触发提交?我一直在调试Yahoo登录页面,但这很困难,因为脚本被缩小了。我注意到的一件奇怪的事情是,当我进入缩小的代码时,只会返回一个响应,而不是两个响应。这让我相信我的IE实例有问题。