我有ASP.NET MVC 5 web应用程序,具有不同的第三方身份验证提供商(Facebook、Vkontakte aka VK、Odnoklassniki aka OK(。我使用Microsoft.Owin.Security.Facebook
进行Facebook身份验证,使用KatanaContrib.Security.VK
和KatanaContrib.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.Owin
和Microsoft.Owin.Security.*
版本4.0.0。我还将供应商使用的API升级到最新版本。但这对我没有帮助。我还向VK身份验证处理程序添加了日志,发现AuthenticationTicket不为空,并且在Identity 中包含了相关信息
有什么想法吗?也许你可以给我一些进一步调查的方向?
更新所有Microsoft.Owin.Security.*
后,我发现登录失败(GetExternalLoginInfoAsync
返回null(,以防ASP.Net_SessionId cookie尚未创建,但如果存在,则可以登录。因此,将代码Session["logging"]=true
放在登录页面加载上就解决了这个问题。
这里也提到了