2017-01-04 24 views
1

以下是一个示例体系结构。使用Spring的微服务授权

  • 用户经由API网关
  • API网关进行认证的所有请求
  • 弹簧会话复制http会话到微服务“A”和“B”访问微服务“A”和“B”。
  • 微服务“C”访问微服务“A”,没有任何安全检查。

Example architecture

什么是提供浏览器和微服务之间的授权检查的最佳途径?该解决方案需要解决微服务“C”没有关联的“会话”/角色。

具体来说:

  • 如何能方法级授权工作[即。 @PreAuthorize]当微服务“C”没有用户?
  • 将所有授权检查放入API网关并将所有内部微服务通信置于无保护状态是否有意义?

回答

0

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

+0

中找到更多详细信息如何将令牌转换为可以通过@PreAuthorize验证的角色/权限? –

0

API网关可以设置在头部的X身份验证令牌与httpsessionheaderStrategy名单。 ,然后每个服务都可以有一个GenericFilter来根据场景设置认证上下文。