我有一个包含以下内容的单页Web应用程序
我最近开始在控制台中看到一些警告,内容为:“设置了与跨站点资源关联的Cookie,但未添加'SameSite'属性。将来的Chrome浏览器将仅提供交叉-site请求是否将它们设置为“ SameSite = None”和“ Secure”。
因此,基于此,我们进行了一些研究,并获得了以下文章,该文章恰好解释了详细情况。 Explanation of Cookie Issue
我读了好几次文章,并认为我对它有所了解,但我仍在努力解决它的一个简单方面。在某些区域,他们要求您向“项目”中添加一些代码。我的问题是(仍然是Identity Server及其内部工作的新手),他们指的是“项目”。我不确定要在哪里放置它们提供的代码以解决此问题。
请记住,这些问题仅发生在运行Google Chrome的MacOS上。如果我在Windows PC上运行应用程序,我仍然会看到警告,但是我可以注销并清除所有现有的cookie
答案 0 :(得分:0)
登录时,IdentityServer将始终创建cookie。 您可以在这里阅读更多内容-http://docs.identityserver.io/en/3.1.0/topics/signin.html
这意味着Identityserver使用cookie来验证用户
您可以按照以下步骤配置相同的站点cookie
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie("Cookies", options =>
{
options.Cookie.SameSite = SameSiteMode.Lax;
});
答案 1 :(得分:0)
您将在Google Chrome中陷入控制台冲突,并且您的身份服务器无法重定向到客户端(可能是React App或适用于Chrome 80版本的Angular App)。
与资源at相关联的cookie设置为SameSite = None,但未设置安全。它已被阻止,因为Chrome现在仅发送标记为SameSite = None的cookie(如果它们也被标记为Secure)。您可以在Application> Storage> Cookies下的开发人员工具中查看cookie,并在https://www.chromestatus.com/feature/5633521622188032上查看更多详细信息。
要解决此问题,您需要进行以下链接中提及的更改-
https://www.thinktecture.com/en/identity/samesite/prepare-your-identityserver/
注意:对于.Net Core 2.2,设置SameSite =(SameSiteMode)(-1),对于.Net Core 3.0或更高版本,设置SameSite = SameSiteMode.Unspecified
此外,对于Chrome 80版本,请添加此额外条件-
if ( userAgent.Contains("Chrome/8"))
{
return true;
}