我在api.myapp.com有API网关,由CloudFront CDN (来自S3存储桶) spa1.myapp.com和spa2.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.comspa2.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模式应该如何工作的图片:

发布于 2022-01-17 13:41:01
您需要使用API驱动的流来解决CDN部署的SPA使用安全cookie的问题:
令牌处理程序模式
有关所有部件是如何组合在一起的,请参见Curity代码示例。实用程序API和网关可以是执行OAuth工作和在调用API时处理cookies的最佳选择。
AWS SPA
还请参阅我的AWS SPA,以获得可以运行的工作版本。我想我的域名设置和你的一样。
多应用程序
您将通过多个API路由来处理这一问题,这也是网站的工作方式,您需要考虑API / cookie路径和域,这将使您能够最好地扩展您的体系结构。在AWS中,我更喜欢第一个,因为域可以很容易地分离出来。
看看你的想法,然后贴出任何问题--然后我会整理一下我的答案。在此期间,我们将在这个主题上做更多的工作,所以请注意我们的资源。
https://stackoverflow.com/questions/70741600
复制相似问题