V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sakurawzt
V2EX  ›  Java

SpringBoot 和 OAuth2.0(整合失败/鉴权失败)

  •  
  •   sakurawzt · 2023-09-28 16:43:29 +08:00 · 1827 次点击
    这是一个创建于 456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想要自己做一个完整的系统,包含鉴权这方面的,去用 springboot 整合 oauth2.0 的时候,网上一查都是朝来抄去的代码,目前没有找到体系完整的一个项目。 在这过程中还涉及到了 Spring 的一些版本冲突问题,有的功能在 2.7 之后,但是对 oauth2.0 的支持在 2.7 之后就没有能参考的案例了,搞来搞去都搞不好,查来查去都是解释概念和不实用的代码。 求助各位大佬,有一份完整的项目代码,或者教教我这套逻辑的具体流程。

    23 条回复    2024-02-01 15:33:35 +08:00
    mmdsun
        1
    mmdsun  
       2023-09-28 16:48:11 +08:00
    官文文档链接的 github 的 sample 那个还挺全的,配合文档一起看。

    https://github.com/spring-projects/spring-security-samples#readme
    sakurawzt
        2
    sakurawzt  
    OP
       2023-09-28 16:53:25 +08:00
    @mmdsun 好的,感谢老哥,我去看看
    totoro52
        3
    totoro52  
       2023-09-28 17:02:48 +08:00
    https://v2ex.com/t/796071#reply53
    我之前整合过,最终放弃了
    sakurawzt
        4
    sakurawzt  
    OP
       2023-09-28 17:11:53 +08:00
    @totoro52 太难了,还想要加上整个鉴权,我还是在摸索摸索。
    Jrue0011
        5
    Jrue0011  
       2023-09-28 17:15:12 +08:00
    Spring Security 确实绕,不过感觉他设计的还可以,自己有自定义需求的话一般总能找到扩展的方式,就是得撸文档、撸源码
    sakurawzt
        6
    sakurawzt  
    OP
       2023-09-28 17:40:57 +08:00
    @Jrue0011 主要是和 OAuth2.0 的整合,springsecurity 的自定义倒是啃下来了
    cp19890714
        7
    cp19890714  
       2023-09-28 17:44:18 +08:00
    个人建议不要直接使用 spring security oauth2 。
    我现在这个项目,创建的时候,正好是 security-oauth2 大升级的时候, 依赖版本异常混乱。再加上业务上的不正常需求,导致了很多麻烦。
    现在项目中还在用 security oauth2 ,但是不用它的流程,只用它的功能,流程我自己控制。
    security-oauth2 对微服务的支持不全,得自己写。索性我全自己搞了。
    KevinBlandy
        8
    KevinBlandy  
       2023-09-28 17:47:02 +08:00
    推荐一个优质的 spring/boot/data/security/cloud 的中文文档,无广告,无须登录,无须关注,在线读。https://springdoc.cn/docs/
    cp19890714
        9
    cp19890714  
       2023-09-28 17:49:47 +08:00
    security-oauth2 的实现是很不错的。自己手写质量肯定远远不如人家。
    所以我现在禁用了自动装配,自己写 filter ,需要用到 security-oauth2 的功能,就直接拿过来用,比如:oAuth2FeignRequestInterceptor OAuth2RestTemplate AccessTokenProvider
    likeme
        10
    likeme  
       2023-09-28 17:52:21 +08:00
    为什么 spring 的官方文档这么难看懂...hhhh 可能是我太菜了
    123zouwen
        11
    123zouwen  
       2023-09-28 17:52:30 +08:00
    还是看官方例子+ 源码吧, security 这个框架和一般的框架不一样. 一般的框架你只需要知道如何用就可以了,
    security 这一套如果不懂设计思路和源代码,根本就不知道如何用和定制化.

    网上的代码大部分都是过时/错误的.就连最基本的整合 jwt,网上大部分还是让你搞 userService 而非直接集成 resource server.
    cookii
        12
    cookii  
       2023-09-28 18:00:03 +08:00 via Android
    其实 spring 的文档还是写的算可以的了
    sakurawzt
        13
    sakurawzt  
    OP
       2023-09-28 18:23:58 +08:00
    @cp19890714 是的,我去年就是这个情况,然后我被迫放弃了,真的很混乱
    sakurawzt
        14
    sakurawzt  
    OP
       2023-09-28 18:24:17 +08:00
    @KevinBlandy 好的,我去瞅瞅
    qqlyatt
        15
    qqlyatt  
       2023-09-28 18:25:08 +08:00
    没实现过 spring securiy + OAuth2 的话,推荐看慕课网 jojo 老师的课程:《 Spring Security+OAuth2 精讲,打造企业级认证与授权》。这个课程跟着做两三遍差不多就能理解流程了,但是好像不是最新的 spring security + OAuth2 ,那么这个时候还有时间的话,你可以看官方文档了。Spring Security 6 + Spring Authorization Server 1.1.2 就是当前时间节点的最佳实践了。跟着官方文档,对照流程过亿遍。其实自己练习的话还是要按照真实的 RBAC 来设计的,这个是难点,可能在你懂得 security 流程之后,要好好整理的一个点。后期设计的时候尽量按真实的来,会更有意义,最好能前端后端一起来。
    sakurawzt
        16
    sakurawzt  
    OP
       2023-09-28 18:25:09 +08:00
    @cp19890714 需要整体使用的时候就比较混乱了,太痛苦了
    sakurawzt
        17
    sakurawzt  
    OP
       2023-09-28 18:25:25 +08:00
    @likeme 多看就懂了,大家都一样
    sakurawzt
        18
    sakurawzt  
    OP
       2023-09-28 18:26:11 +08:00
    @123zouwen 是的,网上的例子大部分是错的,security 这块我倒是整好了,就是和 oauth2.0 一起用有点难受
    sakurawzt
        19
    sakurawzt  
    OP
       2023-09-28 18:26:47 +08:00
    @qqlyatt 好,我多去了解一下
    dengji85
        20
    dengji85  
       2023-09-29 15:33:13 +08:00
    我以前也研究过一段时间,其实搞清楚 oauth2 的原理后可以不要纠结用 spring security 上全家桶,实际项目要做一些定制的开发,搞清他的 api 要花很长时间,推荐可以用一下 Apache Oltu ,更加轻量和简单
    sakurawzt
        21
    sakurawzt  
    OP
       2023-10-07 10:48:06 +08:00
    @dengji85 好的,我去了解了解
    wjg10086
        22
    wjg10086  
       2023-10-07 10:55:19 +08:00
    sa-token 怎么用,建议用吗
    sakurawzt
        23
    sakurawzt  
    OP
       330 天前
    @wjg10086 没用过哎
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   962 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.