从站点A向站点B发布表单时,POST请求是否包括站点B的cookie?

时间:2019-05-24 08:17:01

标签: html forms oauth-2.0 identityserver4 oidc

从根本上讲,这是一个OAuth2 / OIDC(IdentityServer4)问题,当用户的浏览器加载身份服务(站点A)页面并将FORM POST authorization codeid_token回到依赖方站点(站点B)时发生。

依赖方站点(站点B)接收到FORM POST请求,但之前没有在用户浏览器中放置站点B的cookie,这使验证过程失败。

我尝试设置ALLOW-CROSS-ORIGIN-ACCESS标头,但它似乎对FORM POST方案(不是ajax调用)没有帮助。

在OAuth2 / OIDC集成的通用应用程序中,我是否不希望将Cookie与authorization codeid_token一起发布回依赖部件站点(站点B)?或更笼统地描述它,当从站点A到站点B进行表单发布时,我是否应该指望站点B的任何cookie都不属于站点B的请求?

1 个答案:

答案 0 :(得分:1)

这不是CORS,这是另一个问题,很可能与Same Site Cookie政策有关。那是特定于浏览器的。

当站点B是ASP.NET核心时,您可以设置:

services.ConfigureApplicationCookie(opts=>{opts.Cookie.SameSite = SameSiteMode.None;});
//and
app.UseCookiePolicy(new CookiePolicyOptions{MinimumSameSitePolicy = SameSiteMode.None});

(请参阅详细讨论on ASP.NET Core github

或通过将其他站点切换到Identity Server作者提供的相同站点 POST来使用更智能,更安全的trick