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



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

出于某种原因,使用我的本地版本IE 11,在与雅虎进行身份验证后,两个响应被发送回网络服务器,每个响应都在自己的独立线程中进行验证。一个响应被确定为有效,而另一个响应则被确定为无效,因为第一个响应已经被验证。然后将响应发送回用户,根据首先发送的响应,可能会出现两种截然不同的结果。

正确使用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();

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

最新更新