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

     1 
                    
                    ifsclimbing      2021-08-16 15:16:50 +08:00 
                    
                    人生苦短, 我用 python 
                 | 
            
     2 
                    
                    Sasasu      2021-08-16 15:18:46 +08:00 
                    
                    「面向切面编程」 
                 | 
            
     3 
                    
                    Grande      2021-08-16 15:22:51 +08:00    这味道比杯子里面的拿铁还新鲜 
                 | 
            
     4 
                    
                    HiShan      2021-08-16 15:25:52 +08:00 
                    
                    这只是 Security 的一个认证功能吧。它还提供后续很多其他权限管理的功能不需要自己实现 
                 | 
            
     5 
                    
                    qwerthhusn      2021-08-16 15:26:13 +08:00    从来不用 Spring Security,只是感觉这玩意增加工作量的 
                自己手写也不算很复杂  | 
            
     6 
                    
                    jorneyr      2021-08-16 15:27:23 +08:00 
                    
                    为了支持更多的第三方 OAuth2,直接用 JustAuth,ScribeJava 等 OAuth2 工具直接硬上,实现一个 OncePerRequestFilter 到 UsernamePasswordAuthenticationFilter 前面是不是更直观。 
                 | 
            
     8 
                    
                    MIUIOS   OP @HiShan 是的 security 提供的一个用于 oauth2 认证的包,我起初天真的以为 这玩意拿来就能用,但是发现,钉钉的流程完全就是魔改了,如果要对接 github  google,YouTube 等网站,可以用这个包,因为官方默认就提供了支持,配置几行就能用,国内的应用请直接避开,配置到最后你会发现根本用不了 
                 | 
            
     9 
                    
                    MIUIOS   OP 虽然吃了点亏 但还是把 oauth2 源码看了个遍 还是学了点东西 
                 | 
            
     10 
                    
                    ikas      2021-08-16 15:37:37 +08:00 
                    
                    如果你又需要对接另一个接口.他又有不一样的配置,是不是自己又要 copy 代码写一套? 
                 | 
            
     12 
                    
                    warcraft1236      2021-08-16 15:40:58 +08:00 
                    
                    这只能说明钉钉垃圾啊,手动狗头 
                 | 
            
     13 
                    
                    MIUIOS   OP @warcraft1236 钉钉的这个流程我是没想到 大意了   更骚的还是钉钉提供了 sdk 但没有上 maven  我只能自己传到私有库 
                 | 
            
     14 
                    
                    shot      2021-08-16 16:24:24 +08:00    钉钉的锅,不要甩到 Spring Security 上。 
                 | 
            
     15 
                    
                    XhstormR02      2021-08-16 17:00:18 +08:00 via Android 
                    
                    Spring Security 还是很好用的 
                 | 
            
     16 
                    
                    a728976009      2021-08-16 17:16:08 +08:00 
                    
                    oauth2 协议里就是 clientid,这只能说明叮叮没支持标准的 oauth2 或 oidc 协议 
                 | 
            
     17 
                    
                    EarthChild      2021-08-16 17:28:13 +08:00 
                    
                    可以安利客户使用企业微信。说钉钉不安全或维护费用成本较高。钉钉的锅,不要甩到 Spring Security 上。 
                 | 
            
     18 
                    
                    NXzCH8fP20468ML5      2021-08-16 17:33:12 +08:00 
                    
                    用过 aspnetcore 的 Identity 就知道 Spring Security 的真香了 
                 | 
            
     20 
                    
                    cp19890714      2021-08-16 19:49:19 +08:00    在微服务中使用 spring security oauth2 后, 我很后悔.  
                因为需要实现一些其中没有的 但并不复杂的特性, 得先看大量源码, 然后再改. 真折磨人. 花费的时间比自己手写都要长. 当然, 也可以说是自己选型失败, 对 spring security oauth2 的细节不熟悉, 导致与需求不符.  | 
            
     21 
                    
                    cwek      2021-08-16 20:18:38 +08:00 
                    
                    没办法,中国和世界是不同的(摊手 
                 | 
            
     22 
                    
                    leonme      2021-08-16 21:20:51 +08:00 via iPhone 
                    
                    @ifsclimbing 跳槽你就懂了,没啥公司用 
                 | 
            
     23 
                    
                    meshell      2021-08-16 21:44:14 +08:00 
                    
                    你接微信,QQ 登录也这样的,我有个项目也这样,这些魔改过的 oauth2 用这些通用的库接起来真难受。 
                 | 
            
     24 
                    
                    wangxiaoaer      2021-08-16 22:08:28 +08:00 
                    
                    @HiS #4 举个例子? 
                 | 
            
     25 
                    
                    vjnjc      2021-08-16 23:37:26 +08:00 
                    
                    楼主说的没错,我记得 security 里的 role 也很魔性,要一个固定的 prefix 
                 | 
            
     26 
                    
                    unlimitedsola      2021-08-17 00:26:56 +08:00 
                    
                    明明是钉钉不按规范实现 OAuth2, 不要甩到 Spring Security 上。 
                 | 
            
     27 
                    
                    changdy      2021-08-17 00:28:57 +08:00 
                    
                    借楼 提问 spring 上面 比较好的安全认证框架是什么?  
                security 涵盖了太多的内容 ,感觉也不是为了 restful 而生.  | 
            
     30 
                    
                    fpure      2021-08-17 08:57:42 +08:00 
                    
                    我不太理解,像认证鉴权之类需求真的需要框架来帮我们实现吗,这不应该是业务系统的职责吗,Spring Security 有存在的必要吗? 
                 | 
            
     31 
                    
                    huiyanpohundh123      2021-08-17 08:57:56 +08:00 
                    
                    用 springsecurity 实现 jwt 发现自己只用到了 SpringContext 这个全局上下文获取用户令牌用 和 借用了 HTTPBasicAuthFilter 的思想 
                 | 
            
     32 
                    
                    Oktfolio      2021-08-17 08:59:53 +08:00 
                    
                    
                 | 
            
     33 
                    
                    chocotan      2021-08-17 09:00:12 +08:00    各家的 oauth2 都有些魔改,spring-security 难道要每个都适配一下? 
                spring-security 的 oauth2-client 和同样是 Spring-security 的 oauth2 server 配合起来还是不错的。  | 
            
     35 
                    
                    gitdoit      2021-08-17 09:04:21 +08:00 
                    
                    要用 spring security,首先需要读源码,这就厉害了 
                 | 
            
     36 
                    
                    Cbdy      2021-08-17 09:17:30 +08:00 via Android 
                    
                    别用 Spring Security 
                 | 
            
     37 
                    
                    Mithril      2021-08-17 09:19:29 +08:00     | 
            
     38 
                    
                    feelinglucky      2021-08-17 09:27:22 +08:00 
                    
                    @Cbdy 那用啥? 
                 | 
            
     39 
                    
                    gmywq0392      2021-08-17 10:02:10 +08:00 
                    
                    老哥 如果是 OIDC 呢 最近也在做这个 
                 | 
            
     40 
                    
                    Cbdy      2021-08-17 10:02:42 +08:00 via Android 
                    
                    @feelinglucky 简单自己写一下 
                 | 
            
     41 
                    
                    leafre      2021-08-17 10:06:47 +08:00 
                    
                    这些毒瘤不遵守 OAuth2.0 规范,能怪 Spring Security? 
                 | 
            
     42 
                    
                    cweijan      2021-08-17 10:06:56 +08:00 
                    
                    @ifsclimbing 都什么年代了还吹 python 
                 | 
            
     43 
                    
                    gmywq0392      2021-08-17 10:08:10 +08:00 
                    
                    还有,是不是老哥用的版本太新了 
                 | 
            
     44 
                    
                    raptor      2021-08-17 10:37:26 +08:00 
                    
                    这也怪 SpringSecurity ?难道不是因为钉钉没遵守 OAuth2.0 规范么? 
                 | 
            
     45 
                    
                    a719031256      2021-08-17 11:48:35 +08:00 
                    
                    Security----靠谱 
                钉钉----垃圾  | 
            
     46 
                    
                    siweipancc      2021-08-17 12:45:22 +08:00 via iPhone    征集有志之士开发,一个国产的安全框架,能全自动适应国内魔改那种 
                 | 
            
     47 
                    
                    tt0411      2021-08-17 12:51:35 +08:00 
                    
                    "官方的 oauth2 包提供的思路非常不错" 指的是 钉钉 的包吗? 
                 | 
            
     48 
                    
                    MIUIOS   OP @gmywq0392 这个 oauth2 包也支持 OIDC  可以查看下 oauth2-client 包下的 oidc 源码,不多 就几个类 看一遍借鉴一下就 OK 了 
                 | 
            
     50 
                    
                    night98      2021-08-17 20:12:32 +08:00 
                    
                    国产的 sa-token 挺不错的,试用了一下效果还挺好,主要内置挺多功能的,比 security 自己要手写一堆东西靠谱 
                 | 
            
     52 
                    
                    xiaoxinshiwo      2021-08-18 16:21:51 +08:00 
                    
                    @totoro52 常有的事,钉钉文档写的也很垃圾 
                 | 
            
     53 
                    
                    mikulch      2021-08-23 11:08:37 +08:00 
                    
                    spring security oauth2 是真的很复杂。我们之前也做过调研,后来弃用了,太难了。 
                 |