使用Spring

时间:2017-01-04 20:51:56

标签: spring-boot spring-security spring-session

这是一个示例架构。

  • 用户访问微服务" A"和" B"通过API网关
  • API网关对所有请求进行身份验证
  • spring-session将http会话复​​制到微服务" A"和" B"。
  • 微服务" C"访问微服务" A",没有任何安全检查。

Example architecture

在浏览器和微服务之间提供授权检查的最佳方法是什么?解决方案需要解决微服务问题" C"没有关联的"会话" /角色。

具体做法是:

  • 方法级别授权如何工作[即。 @PreAuthorize]当微服务" C"没有用户?
  • 将所有授权检查放入API网关并且所有微服务间通信都不受保护是否有意义?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

只需要授权检查,而不是身份验证,因为不涉及最终用户,这是B2B案例。 在这种情况下,您需要使用客户端凭据OAuth2 流程。 您可以在http://proficientblog.com/microservices-security/

上找到有关它的更多详细信息

答案 2 :(得分:0)

对于来自“C”的请求使用OAuth或JWT怎么样?服务A只需要另一个身份验证提供程序(我假设您已经有一个来自API网关的请求)来验证令牌。然后,可以包含权限或根据令牌中的其他信息提供信息以查找权限。这样就可以保留方法级别的auth注释。

答案 3 :(得分:0)

API网关可以使用httpsessionheaderStrategy在标头中设置x-auth-token。 然后,每个服务都可以使用GenericFilter根据场景设置身份验证上下文。