【问题标题】:Cross sub domain cookies on azureazure 上的跨子域 cookie
【发布时间】:2019-06-12 11:18:01
【问题描述】:

我的申请由两部分组成:

  • Web API,用 .NET Core 编写
  • Web 应用程序,用 React 编写并使用 nodejs express 服务器呈现

我将这些部分托管在 azure 上,每个部分都在它自己的子域上,所以我们有:

  • api.azurewebsites.net
  • app.azurewebsites.net

当用户登录时,我设置了一个 cookie,据我了解,一个 cookie 可以跨子域使用。 cookie的设置方式如下:

Response.Cookies.Append("token", "token value", new CookieOptions
{
    Expires = DateTimeOffset.Now.AddDays(7),
    SameSite = SameSiteMode.None,
    Domain = "azurewebsites.net"
});

但是 cookie 不会随请求一起发送到任一子域。这怎么可能?

如果这是错误的方法,我该如何使用 SSR 应用程序和 rest api 进行身份验证?当应用程序在节点中呈现时,它获取数据的方式与在浏览器中使用 isomorphic-fetch 的方式完全相同,cookie 也随之传递。

所有这一切都在 localhost 上完美运行,当应用程序位于与 api 不同的子域时,问题就开始了。

更新:

cookie 标头如下所示:

Set-Cookie: token=<token>; expires=Sat, 22 Jun 2019 05:35:18 GMT; domain=azurewebsites.net; path=/; secure

在 Firefox 上,它的工作方式与 chrome 不同。在 chrome 上,我执行身份验证 api 请求,获取令牌获取 cookie 标头,然后 cookie 不会随任何后续请求一起发送。

在 Firefox 中,cookie 会随后续请求一起发送,但是在刷新页面后,cookie 就消失了。

【问题讨论】:

  • 您是否检查了 HTTP 请求和响应以查看设置了哪些 cookie?您是否有可能在使用仅限 https 的 cookie 时遇到问题?
  • @cmbuckley 感谢您的收看。我现在将 httponly 属性设置为 false,尽管我相信这是默认值。没有效果。

标签: azure authentication cookies .net-core server-side-rendering


【解决方案1】:

我找到了这个ASP.NET Core Sharing Identity Cookie across azure web apps on default domain (*.azurewebsites.net)

出于安全原因,azurewebsites.net 域会阻止跨子域 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多