如何使用带有 msal 身份验证的 React 应用程序在 Chrome 中删除有关 samesite 的警告

How to remove warning about samesite in Chrome using a React App with msal Authentication

我们有一个 React 应用程序,我们正在对 AAD 使用 msal 身份验证。用户第一次登录应用程序并调用 acquireTokenSilent 获取令牌时,我们收到此警告

我们尝试调用:document.cookie = "cross-site-cookie=bar, SameSite=None, Secure";

但我们继续收到此警告。

当应用程序部署在 Azure 服务中时,情况更糟。 acquireTokenSilentreturns一个ClientAuthError Token renewal operation failed due to time out。如果用户刷新页面然后它获取令牌并且警告消失。

我们怎样才能消除这个警告? 我们得到的 ClientAuthError 是否与此警告相关(这仅在我们收到此警告后发生)?

您需要找到最初设置此 cookie 的位置并提供适当的 SameSite 属性。请记住 - 只有当您 确实希望 在跨站点/第三方环境中发送此 cookie 时,才需要 SameSite=None; Secure。如果 cookie 仅用于您自己的站点,请考虑使用 SameSite=Lax 甚至 SameSite=Strict.

已更新 评论者正确地指出错误中列出的域显然是 microsoftonline.com,这不是提交者的站点。我的建议只有在提交者谈论他们自己网站的 cookie 时才适用。

Login.microsoftonline.com 和 login.live.com 已于 2019 年底更新,以在跨域请求所需的 cookie 上正确设置 SameSite=None 标志。然而,我们还有许多其他不需要跨域的 cookie,并且这些 cookie 没有标记,以减少我们对实时系统进行的更改量。这可能会导致 Chrome 控制台中出现一些警告,对于 login.microsoftonline.com 和 login.live.com 域,您可以安全地忽略这些警告。