我们有些用户无法通过Google连接到我们的平台。发生这种情况时,总是针对特定设备,但是根据我们到目前为止的信息,并不是所有设备都相同(待确认)。
我们正在使用ASP.NET Core(和Identity Server 4)。
我们这边的错误是,从oauth流返回时,由ASP.NET标识设置的关联cookie消失了。我们已经验证了它在开始时就已经设置好并且有效。这不是关于数据保护的问题(我们确实有此问题)。无论我们尝试连接哪个帐户,我们都可以在两台装有iOS 12的iPad上进行复制。所有这些帐户都可以连接到其他设备,包括具有iOS 13的iPad。
因此,我们正在尝试找出可能导致这些特定设备发生故障的原因。同样,这似乎只是在最近才开始发生,而且我们无法确定是什么变化可能触发了这一方面。
将iPad从iOS 12更新到iOS 13即可解决此问题。
答案 0 :(得分:9)
也许您可以在AddOpenIdConnect(“”)中使用此代码。
如果您使用.net core> 2。*
options.NonceCookie.SameSite = (SameSiteMode) (-1);
options.CorrelationCookie.SameSite = (SameSiteMode) (-1);
如果您使用.net> 3。*
options.NonceCookie.SameSite = SameSiteMode.Unspecified;
options.CorrelationCookie.SameSite = SameSiteMode.Unspecified;
答案 1 :(得分:1)
在2019/11/19上发布了.NET Core v2.2.8。此版本包含此更改,补丁说明中对此进行了提及:
风险:中等。已知SameSite更改与旧版OS和浏览器不兼容,尤其是iOS 12和OSX Mojave(最新-1)。这些仅占Web客户端用户群的一小部分,但很有影响力。更新到最新的OS版本可解决不兼容问题。
由于我们的Docker映像基于mcr.microsoft.com/dotnet/core/aspnet:2.2
,因此12月3日发生的不相关更新将该更新推送至我们的服务器。
This blog post详细解释了这种情况,但总之:
set-cookie
未指定SameSite
值时,None
SameSite=None
时,假设浏览器默认为SameSite
,则ASP.NET Core不会将set-cookie
值发送到None
SameSite=None
SameSite=None
视为SameSite=Strict
(有关详细信息,请参见this webkit bug)尽管我们可以恢复到2.2.7,但是即将发布的Chrome更新(80)将停止运行。幸运的是,this article清楚地说明了正确的操作过程:我们需要实现用户代理嗅探,而不要将SameSite=None
发送给不支持它的用户代理。 This comment提到了要过滤的建议用户代理,看起来不错。