使用Spring Security保护REST微服务

Ale*_*lex 13 spring spring-security microservices

我正在寻找一种最佳实践和有效的解决方案来保护多个微服务,通过REST与Web客户端应用程序进行通信.

目前的设置:

这些微服务是用Java构建的,使用Spring Framework并运行到Docker容器中.

客户端是Angular 2应用程序.

我创建了一个新的μService,它将充当" 网关 ",并且是我的Web客户端和我的其他服务之间的唯一通信点.

我从远程身份验证API检索JWT加密令牌(让我们称之为LOCK)

我正在考虑的解决方案:

在此输入图像描述

我可以将登录JWT存储到cookie中,然后将其发送到网关.

网关嵌入最终有效负载,发送给相关的μService令牌,并将用户存储在数据库中.

然后,微服务获取查询,在远程认证服务中检查用户角色,如果足够,则返回结果为200的状态.

编辑

我们需要在我们的μServices配置单元中安装RabbitMQ Broker,从而使用WebSockets.为了以与保护REST API相同的方式保护WebSockets,我不确定我们是否仍应该在网关中管理安全性,并且可能自己在微服务级别管理它.因为很多消息都会传输,我们应该摆脱一个会减慢速度的中间件.

问题:

这是一个好习惯吗?什么可以做得更好?你有没有做过满足同样需求的事情的例子?非常感谢您的分享和想法.

小智 1

此外,您可能必须在微服务之间建立信任。您可以使用以下组合:

  • 使用 LDAP/OAuth2 令牌
  • 使用IP白名单
  • CORS规则
  • HTTPS