微服务的LocalStorage跨域

时间:2018-07-07 01:31:46

标签: local-storage cross-domain microservices

这个问题主要是为了确保我不会错过明显的地方。我的公司正在使用许多微服务应用程序构建一个Web平台,每个应用程序都在React中内置了自己的UI。我们有一个反向代理,负责将请求路由到暂存和生产环境,从而抽象化了集群中用于服务的端口分配。长期而言,将为该端口动态分配etcd和服务发现,因此我们不必为服务预先分配端口,而只需让集群流程来处理即可。

我们遇到的一个令人烦恼的问题是在本地为每个服务的UI组件进行开发。每个服务之间共享的信息量最少,但是需要将身份验证和访问令牌与用户个人资料一起传递,以完成对服务API层的后续请求。现在,这些令牌仅包含用户配置文件信息和用户会话的到期时间,之后它们必须再次登录并获取新令牌。这些作为简单的JWT令牌保存在localStorage中,但最终将保存在memStorage中,以便在浏览器关闭时销毁该令牌。也就是说,在本地开发时,跨域适用于local&memStorage,因为代理未提取端口分配。

我们考虑过让所有服务都在http上分段运行(rproxy也是我们的ssl终止点,因此生产环境都是ssl),然后我们也在本地升级我们正在使用的服务80,但是遇到了权限限制在macOS上除了根进程以外的任何其他东西。接下来考虑添加一个iFrame在服务之间移动令牌,但这似乎为应用程序增加了更多的攻击面,以解决生产中不存在的开发问题。

最后,我们一直在使用简单的cookie在服务之间移动令牌,但是这些令牌必须保持启用JavaScript的功能,并再次将代码添加到生产中。

想知道是否有人对上述问题有好的解决方案。已经考虑过将所有会话信息移至后端,并在Auth Header中使用sessionId,但不确定是否错过了明显的地方。预先感谢!

0 个答案:

没有答案