有没有办法将 SameSite 属性应用于 .AspNetCore.Correlation cookie?
Is there a way to apply SameSite attribute to .AspNetCore.Correlation cookie?
根据最近Chrome 80的变化,现在需要在需要跨站点发送的cookie上指定SameSite=None
。
我发现我的 Asp.Net 核心站点托管在不同站点的框架上时存在问题。 WS-Federation 身份验证当前已损坏,因为 .AspNetCore.Correlation cookie:
中缺少 SameSite=None
属性
Set-Cookie: .AspNetCore.Correlation.WsFederation.qG-dtdsIcVBHSRW4SpPpqpMYMrueIrLfWLvElKrbyXg=N; expires=Fri, 17 Jan 2020 09:17:08 GMT; path=/signin-wsfed; secure; httponly
我找到了一种使用 Cookie Policy Middleware:
添加 SameSite=None
到 cookie 的方法
app.UseCookiePolicy(new CookiePolicyOptions()
{
MinimumSameSitePolicy = SameSiteMode.None
});
这工作正常,但这会导致使用此属性创建所有 cookie,我想避免这种情况。是否有可以仅应用于关联 cookie 的侵入性较小的解决方案?
定义身份验证方案时,您可以更改关联 cookie 的设置。
例如:
.AddWsFederation(o =>
{
o.CorrelationCookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
})
来自 OP 的注释:
Beware that you need the .NET Core November 2019 Update installed on your server for this to work (else the SameSite attribute isn't issued). See this article.
根据最近Chrome 80的变化,现在需要在需要跨站点发送的cookie上指定SameSite=None
。
我发现我的 Asp.Net 核心站点托管在不同站点的框架上时存在问题。 WS-Federation 身份验证当前已损坏,因为 .AspNetCore.Correlation cookie:
中缺少SameSite=None
属性
Set-Cookie: .AspNetCore.Correlation.WsFederation.qG-dtdsIcVBHSRW4SpPpqpMYMrueIrLfWLvElKrbyXg=N; expires=Fri, 17 Jan 2020 09:17:08 GMT; path=/signin-wsfed; secure; httponly
我找到了一种使用 Cookie Policy Middleware:
添加SameSite=None
到 cookie 的方法
app.UseCookiePolicy(new CookiePolicyOptions()
{
MinimumSameSitePolicy = SameSiteMode.None
});
这工作正常,但这会导致使用此属性创建所有 cookie,我想避免这种情况。是否有可以仅应用于关联 cookie 的侵入性较小的解决方案?
定义身份验证方案时,您可以更改关联 cookie 的设置。 例如:
.AddWsFederation(o =>
{
o.CorrelationCookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
})
来自 OP 的注释:
Beware that you need the .NET Core November 2019 Update installed on your server for this to work (else the SameSite attribute isn't issued). See this article.