authentication - 是否可以将 HttpOnly Cookie 从一个域设置到另一个子域

标签 authentication cookies single-page-application httponly cookie-httponly

我最初在这里发布了这个问题:https://security.stackexchange.com/questions/255737/is-it-possible-to-set-an-httponly-cookie-from-one-domain-to-another-subdomain

请记住,此问题特定于 HttpOnly 标志设置为 true 的 cookie。

我很确定我的问题的答案是否定的,但我很难通过官方文档或其他帖子找到答案。以下是一些上下文的简单用例:

  1. Python 后端 Web 应用程序 (api.domain.com)
  2. 前端 JavaScript SPA (app.domain.com)
  3. 使用 axios 和正确的用户名app.domain.comapi.domain.com/api/auth/login/ 发出请求code> 和 password 返回正文中带有 access JWT token 的响应,并且响应设置带有 HttpOnly 标志的 refresh cookie [应该失败,因为我认为无法通过对 api.domain.com 的 API 请求在 app.domain.com 上设置 cookie? -- 这是我的问题]
  4. 访问 token 存储在内存中并随每个 API 请求一起传递
  5. 按计划发送向 api.domain.com/api/auth/refresh/ 发出的请求,以刷新短期访问 token 。

我通常将前端应用程序和后端应用程序托管在同一个子域 (app.domain.com) 上,并使用 CloudFront 或 nginx 等进行基于路径的路由,这效果很好。例如,所有以 /api/* 开头的请求都会发送到后端,所有其他请求都会发送到前端应用程序。无论我使用什么选项在服务器上设置 cookie,尝试为 API 使用单独的子域似乎都会失败。

有人可以帮助我确认实际上不可能通过 api.domain.com 上托管的 API 请求在 app.domain.com 等子域上设置 HttpOnly cookie ?如果有人也可以帮助我找到在官方文档中可以找到的地方,那就太好了。

搜索跨子域设置httpOnly cookie,我没有找到任何直接相关的内容。我也没有在这些资源中找到任何可以直接回答我的问题的内容:

https://owasp.org/www-community/HttpOnly

https://learn.microsoft.com/en-us/previous-versions//ms533046(v=vs.85)?redirectedfrom=MSDN

最佳答案

这是可能的。事实上我刚刚做到了。

在您的前端,使用 Axios:

const baseURL = 'https://api.example.com';

const api = axios.create({
  baseURL,
  withCredentials: true,
});

在您的后端,使用 Express:

app.use(
  cors({
    origin: 'https://www.example.com',
    credentials: true,
  }),
);

app.post('/login', async (req, res) => {
  res.cookie('someCookie', someCookieValue, {
    secure: true,
    domain: 'example.com',
    httpOnly: true,
  });
});

关于authentication - 是否可以将 HttpOnly Cookie 从一个域设置到另一个子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69483501/

相关文章:

authentication - 我可以以编程方式创建 AWS Cognito 用户登录吗?

php - 使用 MySQL 和 session 登录

cookies - 从其他域读取 cookie

php - 在 javascript 文件中使用 php 数据

auth_user 模型中的 Django "last_login"属性

c# - 何时/何地使用 azure 后端刷新 Windows 10 应用程序中的访问 token

html - 静态html站点的浏览器cookies有什么作用吗?

ios - objective-C NSUrlConnection : No cookie return

asp.net-web-api - Web API/MVC 6 中的安全 JSON Web token

html - 使用 CSS flex 的两个全高页面