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

2023-09-28 16:43:29 +08:00
 sakurawzt

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

1830 次点击
所在节点    Java
23 条回复
mmdsun
2023-09-28 16:48:11 +08:00
官文文档链接的 github 的 sample 那个还挺全的,配合文档一起看。

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

网上的代码大部分都是过时/错误的.就连最基本的整合 jwt,网上大部分还是让你搞 userService 而非直接集成 resource server.
cookii
2023-09-28 18:00:03 +08:00
其实 spring 的文档还是写的算可以的了
sakurawzt
2023-09-28 18:23:58 +08:00
@cp19890714 是的,我去年就是这个情况,然后我被迫放弃了,真的很混乱
sakurawzt
2023-09-28 18:24:17 +08:00
@KevinBlandy 好的,我去瞅瞅
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
2023-09-28 18:25:09 +08:00
@cp19890714 需要整体使用的时候就比较混乱了,太痛苦了
sakurawzt
2023-09-28 18:25:25 +08:00
@likeme 多看就懂了,大家都一样
sakurawzt
2023-09-28 18:26:11 +08:00
@123zouwen 是的,网上的例子大部分是错的,security 这块我倒是整好了,就是和 oauth2.0 一起用有点难受
sakurawzt
2023-09-28 18:26:47 +08:00
@qqlyatt 好,我多去了解一下
dengji85
2023-09-29 15:33:13 +08:00
我以前也研究过一段时间,其实搞清楚 oauth2 的原理后可以不要纠结用 spring security 上全家桶,实际项目要做一些定制的开发,搞清他的 api 要花很长时间,推荐可以用一下 Apache Oltu ,更加轻量和简单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX