刷新令牌的 Cookie不被存储



我目前正在与JWT和刷新令牌作斗争。我从OAuth 2规范中实现了以下流程:

用户获得一个用于请求的JWT令牌,并且在刷新令牌过期之前检索一个新的JWT。

它工作得很好,刷新令牌由API正确返回,但没有存储在浏览器的cookie存储中。获取令牌的请求使用{ withCredentials: true }

用户获取刷新令牌的方式如下所示。web应用程序在example1.com上运行,API服务器在example2.com上运行,两者都使用https运行。是否有一个错误在我的cookie配置或一些其他错误在我的代码?

const cookieOptions = {
httpOnly: true,
expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000),
secure: true,
sameSite: 'none',
};
res.cookie('refresh_token', token, cookieOptions);

提前感谢!

cookie将被认为是第三方的,浏览器会积极删除这些cookie。通过以下步骤将其转换为第一方cookie:

  • Web app origin is https://www.example.com
  • API运行在https://api.example.com -兄弟域
  • Cookie域为.example.com

这种域关系是使用安全cookie的先决条件,因为最近浏览器限制防止跟踪。我希望你的代码将工作良好,一旦域名设置是正确的。

有关更多信息,请参阅此安全代码示例和使用hosts文件来测试域设置。本例同样使用AES256加密cookie,使用cookie设置SameSite=strict

最新更新