【重点】springcloud分布式中gateway+shiro+jwt认证流程(思路)

这篇具有很好参考价值的文章主要介绍了【重点】springcloud分布式中gateway+shiro+jwt认证流程(思路)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目原来是单体架构,现拆分成spring cloud微服务架构。

过程中,整理了一下项目“认证授权”功能的微服务之间的调用思路:

如下两个方法的切入点都是在ShiroConfig配置类(@Configuration)中@Bean注入的

    1 shiroFilterFactoryBean -> JwtFilter中的onAccessDenied()

                -> 无token:直接放过
                        --> 登录/login 
                            ---> 远程调用oauth模块
                                ----> 去验证(username,password) + accountService.generateToken() 
                                    -----> jwtUtils生成token,返回
                        --> 其它不需要登录的业务模块
                
                -> 有token:jwtUtils校验token
                        --> 合法未过期,放过
                        --> 不合法已过期,重新登录
                    

    2 securityManager -> Realm
    
                -> 认证doGetAuthenticationInfo(有token时才会走这个方法)
                        --> jwtUtils获取userId
                            ---> 远程调用user模块
                                ----> userService查询userInfo,放入上下文中SimpleAuthenticationInfo(便于ShiroUtils.getProfile()获取当前登录的用户信息),返回
                
                -> 鉴权doGetAuthorizationInfo
                        --> 远程调用Authority(role + permission)模块
                            ---> roleService.byUserId(...)查询role,role查询permission,返回

备注:

这么多天的实践,发现:

由于shiro必须使用web-mvc(依赖spring-boot-starter-web),但是web-mvc与web-flux不兼容
而springcloud-gateway必须依赖web-flux,所以shiro无法集成到springcloud-gateway,会失效

就算:shiro-spring-boot-web-starter --> <exclusion>spring-boot-starter-web</exclusion>排除掉。这样虽然能启动,但是shiro的所有filter并不会生效!!!

所以大家在网上根本找不到,没有关于“gateway集成shiro”的相关文章,顶多就是:
① gateway之后与应用app之间再额外加一个权限校验层app。(性能瓶颈,多此一举)
② 或者把shiro放到一个common模块中,所有模块都依赖。(相当于所有模块都有集成shiro了,那还叫啥gateway网关统一鉴权,失去了分布式的意义)

总结:
上面这两种方式都不如spring-security直接在gateway上校验权限的方式更令人满意,如此才叫“gateway网关统一认证鉴权”!!
文章来源地址https://www.toymoban.com/news/detail-498691.html

到了这里,关于【重点】springcloud分布式中gateway+shiro+jwt认证流程(思路)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式springcloud

    微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。服务器支持的线程和并发数有限,到来的请求一直阻塞,会导致服务器资源耗尽, 从而导致所有其它服务

    2024年02月06日
    浏览(38)
  • 【Springcloud】分布式搜索elasticsearch

    先看下翻译: elasticsearch是一款非常强大的 开源搜索引擎 ,可以帮助我们 从海量数据中快速找到需要的内容 以下是生活中ES的使用场景: 项目在运行的时候会产生海量的日志信息,而elasticsearch结合kibana、Logstash、Beats,也就是elastic stack( ELK ),即ELK技术栈。被广泛应用在

    2024年02月08日
    浏览(30)
  • 【Springcloud】elk分布式日志

    (1)什么是分布式日志 在分布式应用中,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。所以我们使用集中化的日志管理,分布式日志就是对大规模日志数据进行采集

    2024年02月09日
    浏览(30)
  • SpringCloud分布式配置中心——Config

    本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 由于微服务越来越多,项目越来越庞大,每一个项目都至少有两三个不同环境的application.properties文件,不易管理,假设我们数据库迁移,那么所有配置文件中有关数据库的地址都需要更改,不

    2023年04月22日
    浏览(24)
  • 分布式事务 —— SpringCloud Alibaba Seata

    传统的单体应用中,业务操作使用同一条连接操作不同的数据表,一旦出现异常就可以整体回滚。随着公司的快速发展、业务需求的变化,单体应用被拆分成微服务应用,原来的单体应用被拆分成多个独立的微服务,分别使用独立的数据源,业务操作需要调用三个服务来完成

    2024年02月08日
    浏览(31)
  • SpringCloud——分布式请求链路跟踪Sleuth

    SpringCloud从F版已不需要自己构建Zipkin Server,只需要调用jar包即可 https://dl.bintray.com/oenzipkin/maven/io/zipkin/java/zipkin-server/ 下载:zipkin-server-2.12.9-exec.jar 运行:java -jar zipkin-server-2.12.9-exec.jar 浏览器访问: ================================================================================ 一条链路通过

    2024年02月16日
    浏览(29)
  • springcloud sleuth分布式请求链路跟踪

    在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败. Spring Cloud Sleuth提供了一套完

    2024年01月16日
    浏览(30)
  • 【分布式微服务专题】从单体到分布式(四、SpringCloud整合Sentinel)

    相对来说,Sentinel的学习难度比之之前的Dubbo要低了不少。不过在学习过程中也遇到了一些认知局限带来的困难。比如,虽然还是学习了Sentinel,但是不知道生产环境该如何配置才是最佳的状态。 说到底,Sentinel还是没有提供很好的文档支持。比如:生产最佳实践方案。 官方也

    2024年01月23日
    浏览(35)
  • 【SpringCloud框架之Config分布式配置中心】

    本笔记内容为尚硅谷SpringCloud框架开发Config配置中心部分 目录 一、概述 1、是什么 2、作用 二、Config服务端配置与测试 1、建仓库并克隆 2、新建项目 1.新建Module 2.POM 3.YML 4.主启动类 5.windows下修改hosts文件,增加映射 6.测试通过Config微服务是否可以从GitHub上获取配置内容  7.配

    2023年04月15日
    浏览(32)
  • 微服务技术栈SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(五):分布式搜索 ES-下

    聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类: 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组 Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组 度量(Metric)聚合:用以计算一些值,比如:最大值

    2024年03月26日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包