Spring Cloud Gateway 业务服务的接口授权校验一般是怎么做的呢?
Gateway使用JWT作为Token的解决方案中,每个业务服务中如何做RBAC的授权校验?
一种方式是JWT的Payload中包含了“角色”或者“权限”等信息,但是Token会变大。
还有一种方式是业务服务通过JWT再去请求一次用户服务拿到“角色”或者“权限”等信息,但是网络请求会增加。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我之前有一种做法就是通过自定义注解,在每个服务启动的时,将url作为key,value为授权校验参数,并且存余redis中,在gateway中通过url在redis中获取相应的校验参数
JWT 在这情况下,就变成伪无状态了,另外如果放 Payload 里边,也暴露系统内部的权限体系了。
认证登录时加载权限数据到redis等分布式缓存中,jwt保存的是用户唯一,服务在每次到来的请求使用过滤,通过统一的权限API(HTTPS)拿到角色和权限,对于大型系统且权限维度细时这样实现,如果粒度粗,角色少,网关传递过去也未尝不
框架内的实现方式就是jwt中包含用户角色及权限
按框架内已经设计好的鉴权方式走即可
spring-cloud-gateway + spring-cloud-oauth2 + spring-cloud-security
登录把用户权限信息存redis,每个业务服务鉴权,从redis获取用户权限角色信息再判断
GW 后面再放个数据库,redis,SQL 无所谓,看你需求,里面存储认证服务器认证过的信息,也可以直接存 jwt,然后发行个 token 给客户端。
使用usertoken(用户权限)和datatoken(数据加密),基本简单的就可以
其他的要看具体的应用场景和具体需求