SpringCloudGateway + IDP实现统一认证

SpringCloudGateway的工作流程

Spring Cloud Gateway 工作流程: image

通过该工作流程图可以了解到API Gateway 提供了三种过滤机制

  • Pre Filters
  • Global Filters
  • Post Filters

那么我们可以利用Global Filters来实现统一拦截认证信息,通过调用IDP服务实现认证与鉴权。

APIGateway + IDP

什么是IDP?IDP是Identity Provider?

image

创建一个AuthFilter实现认证,实现原理其实很简单,就是通过拦截请求头的认证token,将token转换为登录的用户信息,然后调用他的接口权限列表与当前的接口URI做对比,没有就返回无权限;有就允许调用下一步的App Service。

APIGateway + IDP 处理流程

image

  • 1、客户端通过多种登录方式调用IDP登录接口
  • 2、IDP返回Token到客户端;
  • 3、使用token请求网关接口URI;
  • 4、通过网关将token传递给IDP解析;
  • 5、IDP调用角色权限服务获取权限信息;
  • 6、IDP返回JWTtoken解析信息给网关;
  • 7、网关将token请求给应用服务;
  • 8、应用服务调用领域服务返回数据;
  • 9、应用服务返回接口响应数据(JSON)给网关;
  • 10、网关返回数据给客户端;

当然现实中的调用流程不是这么简单的流程,涉及到很多技术细节。但通过这个流程图可以很清晰的了解到SpringCloud微服务体系中如何取授权、鉴权的。

结束

以上IDP实现推荐使用zhoutaoo的SpringCloud框架

https://github.com/zhoutaoo/SpringCloud

来源: 雨林博客(www.yl-blog.com)