我正在寻找一种最佳实践和有效的解决方案来保护多个微服务,通过REST与Web客户端应用程序进行通信.
目前的设置:
这些微服务是用Java构建的,使用Spring Framework并运行到Docker容器中.
客户端是Angular 2应用程序.
我创建了一个新的μService,它将充当" 网关 ",并且是我的Web客户端和我的其他服务之间的唯一通信点.
我从远程身份验证API检索JWT加密令牌(让我们称之为LOCK)
我正在考虑的解决方案:
我可以将登录JWT存储到cookie中,然后将其发送到网关.
网关嵌入最终有效负载,发送给相关的μService令牌,并将用户存储在数据库中.
然后,微服务获取查询,在远程认证服务中检查用户角色,如果足够,则返回结果为200的状态.
编辑
我们需要在我们的μServices配置单元中安装RabbitMQ Broker,从而使用WebSockets.为了以与保护REST API相同的方式保护WebSockets,我不确定我们是否仍应该在网关中管理安全性,并且可能自己在微服务级别管理它.因为很多消息都会传输,我们应该摆脱一个会减慢速度的中间件.
问题:
这是一个好习惯吗?什么可以做得更好?你有没有做过满足同样需求的事情的例子?非常感谢您的分享和想法.