SpringCloud Alibaba微服务实战二十八 - 网关授权VS微服务授权
在SpringCloud架构中,实现授权功能有两种实现方式:
- 在网关层进行授权
- 由后端微服务自己授权
两种方式在此系列文章中都有实现方案,那么问题来了:哪种才是最优方案,哪种方案更合理呢?
很抱歉,看完这篇文章你也不一定能得到你想要的答案,因为结论是并没有最优方案,两种方案各有千秋,只有根据自身业务选择对应的方案。本文我们将两种方案做一个简单对比,以便大伙在做方案决策有个选择参考。
解决方案对比
首先我们看看两种方案实现的原理:如果对具体实现方式有疑问的同学可以参考这篇文章:
SpringCloud Alibaba微服务实战十九 - 集成RBAC授权
网关授权
基于网关授权我们又叫基于路径匹配器授权,请求在经过网关的时候校验当前请求的路径是否在用户拥有的资源路径中。
在基于路径匹配器授权时需要考虑restful风格的访问路径,如 /account-service/blog/user/{id}
或 /account-service/blog/**
等,所以在网关进行授权主要是基于通配符匹配。
微服务授权
微服务授权我们又叫基于方法拦截,在资源上打上对应的方法标识然后分配给用户。在请求方法上通过对应的注解判断当前用户是否有访问此方法的权限。如SpringSecurity中的 @PreAuthorize("hasAuthority('')"
还没有评论,来说两句吧...