1

随着Chrome 80最近的变化,现在需要指定SameSite=None需要跨不同站点发送的 cookie。

当托管在不同站点的框架上时,我发现我的 Asp.Net Core 站点存在问题。WS-Federation 身份验证当前被破坏,因为SameSite=None.AspNetCore.Correlation cookie 中缺少该属性:

Set-Cookie: .AspNetCore.Correlation.WsFederation.qG-dtdsIcVBHSRW4SpPpqpMYMrueIrLfWLvElKrbyXg=N; expires=Fri, 17 Jan 2020 09:17:08 GMT; path=/signin-wsfed; secure; httponly

我找到了一种使用Cookie Policy MiddlewareSameSite=None添加到 cookie 的方法:

app.UseCookiePolicy(new CookiePolicyOptions()
{
    MinimumSameSitePolicy = SameSiteMode.None
});

这很好用,但这会导致使用此属性创建所有 cookie,我想避免这种情况。是否有一种侵入性较小的解决方案可以仅应用于相关 cookie?

4

1 回答 1

3

定义身份验证方案时,您可以更改相关 cookie 的设置。例如:

.AddWsFederation(o =>
{
    o.CorrelationCookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
})

来自 OP 的注意事项

请注意,您需要在服务器上安装.NET Core 2019 年 11 月更新才能正常工作(否则不会发出 SameSite 属性)。见这篇文章

于 2020-01-17T10:18:47.647 回答