SpringSecurity 我怕了

2021-08-16 15:03:08 +08:00
 totoro52

最近项目用了 security 需要对接钉钉和企业微信的登录,看了下官方文档,在 5.2 之前需要引入一个 oauth 包,后面 5.2 需要引 ouah2-client 包,开开心心的引入了,才知道噩梦才开始
官方自带的配置文件使用 client_id 字段作为默认 appKey,但钉钉叫 appid 、、、需要单独配置一个 resolver 去替换
换好了,发起授权正常,轮到回调 code 了,默认的直接是直接把 code 码 post 到指定的网址,结果钉钉也不一样,需要签名,然后又配置一个 converter,
我现在犹如吃了屎一样难受,我直接自己写个应该已经好了也不至于浪费一天时间

总结一句话,如果要对接 oauth2,请直接避开官方提供的代码,直接手撸

8447 次点击
所在节点    Java
53 条回复
ifsclimbing
2021-08-16 15:16:50 +08:00
人生苦短, 我用 python
Sasasu
2021-08-16 15:18:46 +08:00
「面向切面编程」
Grande
2021-08-16 15:22:51 +08:00
这味道比杯子里面的拿铁还新鲜
HiShan
2021-08-16 15:25:52 +08:00
这只是 Security 的一个认证功能吧。它还提供后续很多其他权限管理的功能不需要自己实现
qwerthhusn
2021-08-16 15:26:13 +08:00
从来不用 Spring Security,只是感觉这玩意增加工作量的

自己手写也不算很复杂
jorneyr
2021-08-16 15:27:23 +08:00
为了支持更多的第三方 OAuth2,直接用 JustAuth,ScribeJava 等 OAuth2 工具直接硬上,实现一个 OncePerRequestFilter 到 UsernamePasswordAuthenticationFilter 前面是不是更直观。
HiShan
2021-08-16 15:27:26 +08:00
@HiShan 如果只需要 OAuth2,完全可以自己实现。
totoro52
2021-08-16 15:28:42 +08:00
@HiShan 是的 security 提供的一个用于 oauth2 认证的包,我起初天真的以为 这玩意拿来就能用,但是发现,钉钉的流程完全就是魔改了,如果要对接 github google,YouTube 等网站,可以用这个包,因为官方默认就提供了支持,配置几行就能用,国内的应用请直接避开,配置到最后你会发现根本用不了
totoro52
2021-08-16 15:29:30 +08:00
虽然吃了点亏 但还是把 oauth2 源码看了个遍 还是学了点东西
ikas
2021-08-16 15:37:37 +08:00
如果你又需要对接另一个接口.他又有不一样的配置,是不是自己又要 copy 代码写一套?
totoro52
2021-08-16 15:39:03 +08:00
@ikas 是的 比如我要对接企业微信 企业微信的流程比较规范 所以不需要改动很多 ,但钉钉我是真怕了
warcraft1236
2021-08-16 15:40:58 +08:00
这只能说明钉钉垃圾啊,手动狗头
totoro52
2021-08-16 15:43:14 +08:00
@warcraft1236 钉钉的这个流程我是没想到 大意了 更骚的还是钉钉提供了 sdk 但没有上 maven 我只能自己传到私有库
shot
2021-08-16 16:24:24 +08:00
钉钉的锅,不要甩到 Spring Security 上。
XhstormR02
2021-08-16 17:00:18 +08:00
Spring Security 还是很好用的
a728976009
2021-08-16 17:16:08 +08:00
oauth2 协议里就是 clientid,这只能说明叮叮没支持标准的 oauth2 或 oidc 协议
EarthChild
2021-08-16 17:28:13 +08:00
可以安利客户使用企业微信。说钉钉不安全或维护费用成本较高。钉钉的锅,不要甩到 Spring Security 上。
xxfye
2021-08-16 17:33:12 +08:00
用过 aspnetcore 的 Identity 就知道 Spring Security 的真香了
cheng6563
2021-08-16 17:47:20 +08:00
@totoro52 你肯定没对接企业微信的文件上传,企业微信的 multipart/form-data 就是魔改的。
cp19890714
2021-08-16 19:49:19 +08:00
在微服务中使用 spring security oauth2 后, 我很后悔.
因为需要实现一些其中没有的 但并不复杂的特性, 得先看大量源码, 然后再改. 真折磨人.
花费的时间比自己手写都要长.

当然, 也可以说是自己选型失败, 对 spring security oauth2 的细节不熟悉, 导致与需求不符.

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

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

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

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

© 2021 V2EX