AuthenticationManager.GetExternalLoginInfoAsync always null



我有ASP.NET MVC 5 web应用程序,具有不同的第三方身份验证提供商(Facebook、Vkontakte aka VK、Odnoklassniki aka OK(。我使用Microsoft.Owin.Security.Facebook进行Facebook身份验证,使用KatanaContrib.Security.VKKatanaContrib.Security.Odnoklassniki进行其他身份验证(我有点自定义了VK和OK以满足我的目的(

3天前一切都很好,但从那以后,我的一些客户抱怨他们不能使用第三方提供商登录。我还可以用一些有趣的点来复制问题

  • 对我来说,它在谷歌Chrome(版本71.0.3578.80(中不持久
  • 它在歌剧中一直存在(版本:57.0.30098.91(
  • 当我的网络应用程序在本地或dev.site.ru(Chrome和Opera(上运行时,我可以登录

我在身份验证工作流中添加了更多日志,并找到了

  • AuthenticationManager.GetExternalLoginInfoAsync()总是返回Opera中为null
  • .AspNet.Correlation.*cookie在Chrome登录过程结束时被删除,但在Opera中没有

我有所有的Microsoft.OwinMicrosoft.Owin.Security.*版本4.0.0。我还将供应商使用的API升级到最新版本。但这对我没有帮助。我还向VK身份验证处理程序添加了日志,发现AuthenticationTicket不为空,并且在Identity 中包含了相关信息

有什么想法吗?也许你可以给我一些进一步调查的方向?

更新所有Microsoft.Owin.Security.*后,我发现登录失败(GetExternalLoginInfoAsync返回null(,以防ASP.Net_SessionId cookie尚未创建,但如果存在,则可以登录。因此,将代码Session["logging"]=true放在登录页面加载上就解决了这个问题。

这里也提到了

最新更新