首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OAUTH/BFF模式中为单独的SPA调用相同的API提供独立的cookie?

如何在OAUTH/BFF模式中为单独的SPA调用相同的API提供独立的cookie?
EN

Stack Overflow用户
提问于 2022-01-17 12:46:17
回答 1查看 299关注 0票数 1

我在api.myapp.com有API网关,由CloudFront CDN (来自S3存储桶) spa1.myapp.comspa2.myapp.com以及授权服务器auth.myapp.com提供服务。因此API、SPAs和auth服务器具有相同的根域。

每当用户登录任何SPA时,SPA都会将用户重定向到授权服务器,然后授权服务器将用户重定向回SPA设置会话cookie (HttpOnly,Secure,SameSite = Strict)。授权服务器后面有OAUTH2服务器,我想要的是使用OAUTH/BFF (前端后端)模式。

现在我不确定auth.myapp.com是否可以为spa1.myapp.com设置用于api.myapp.com的会话cookie,但是当来自其他SPA (spa2.myapp.com)的请求出现时,不应该将相同的会话cookie传递给api.myapp.com

据我所知,我需要一些反向代理,但我有点不知所措,应该添加哪些服务(在哪些服务之前)。

我的想法是必须反向代理:

  • spa1.myapp.com/api => api.myapp.com
  • spa2.myapp.com/api => api.myapp.com

这些反向代理将为域spa*.myapp.com设置的cookie传递给api.myapp.com (作为令牌而不是cookie)。

但是不知道如何处理auth.myapp.com --当从auth.myapp.com重定向回spa*.myapp.com时,是否需要任何反向代理来为spa*.myapp.com/api设置cookie?

另外,是否有可能让spa1.myapp.com/api => api.myapp.com反向代理服务于CloudFront CDN的SPA?

下面是我理解BFF模式应该如何工作的图片:

EN

回答 1

Stack Overflow用户

发布于 2022-01-17 13:41:01

您需要使用API驱动的流来解决CDN部署的SPA使用安全cookie的问题:

  • 授权服务器是您不拥有或控制代码的开箱即用组件,因此不要尝试使用它来设置SPA cookie
  • Cloudfront不能(轻松)为SPA设置cookie,因为Cloudfront的作用只是使静态内容可用
  • 然而,API可以为SPA设置cookie,尽管它是一个稍微棘手的流程。
  • 浏览器应该直接调用API入口点,而不是通过Cloudfront路由API请求。
  • SPA使用的API网关入口点URL可以不同于物理API URL。

令牌处理程序模式

有关所有部件是如何组合在一起的,请参见Curity代码示例。实用程序API和网关可以是执行OAuth工作和在调用API时处理cookies的最佳选择。

AWS SPA

还请参阅我的AWS SPA,以获得可以运行的工作版本。我想我的域名设置和你的一样。

多应用程序

您将通过多个API路由来处理这一问题,这也是网站的工作方式,您需要考虑API / cookie路径和域,这将使您能够最好地扩展您的体系结构。在AWS中,我更喜欢第一个,因为域可以很容易地分离出来。

看看你的想法,然后贴出任何问题--然后我会整理一下我的答案。在此期间,我们将在这个主题上做更多的工作,所以请注意我们的资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70741600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档