天青上的跨子域Cookie

时间:2019-06-12 11:18:01

标签: azure authentication cookies .net-core ssr

我的应用程序由两部分组成:

  • 以.NET Core编写的Web API
  • 使用React编写并使用Node.js Express服务器呈现的Web应用程序

我将这些部分托管在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进行身份验证?当应用在节点中呈现时,它使用与同构提取相同的方式在浏览器中获取数据,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消失了。

1 个答案:

答案 0 :(得分:0)

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

出于安全原因,azurewebsites.net域的跨子域Cookie被阻止。