OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

Stella981
• 阅读 690

背景

6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 重要变化:

  • 基于Spring Boot 2.0.X
  • 不兼容 Spring Boot 1.5.X

期间踩过几个坑,分享出来给大伙,主要是关于 Spring Cloud oAuth 部分

目标

基于现有Spring Cloud 脚手架pig开始动手升级。

关于pig:

基于Spring Cloud、oAuth2.0开发基于Vue前后分离的开发平台,支持账号、短信、SSO等多种登录,提供配套视频开发教程。

码云地址:https://gitee.com/log4j/pig

版本变化

                 +------------------+
                 |                  |
                 |  1.5.12.RELEASE  |
                 |                  |
                 +--------+---------+
                          |
Spring Boot               |
                          v

                 +------------------+
                 |                  |
                 |  2.0.3.RELEASE   |
                 |                  |
                 +------------------+



                 +------------------+
                 |                  |
                 |  Edgware.SR3     |
                 |                  |
                 +--------+---------+
                          |
Srping Cloud              |
                          v

                 +------------------+
                 |                  |
                 |  Finchley.RELEASE|
                 |                  |
                 +------------------+

问题总结

PasswordEncoder 变化

直接使用原有代码报错:

passwordencoder mapped for the id null


// 旧
@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}
 
// 新
@Bean
public PasswordEncoder passwordEncoder() {
    return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}

在 Finchley 版本中, 出于安全性的原因,修改了PasswordEncoder 的生成和使用方法。
在注入bean 的时候不能显示指定PasswordEncoder的实现类,类比旧方法。只能通过工厂类来创建 OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

PasswordEncoderFactories.createDelegatingPasswordEncoder();

OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享  通过传入密码的特征码,动态去获取密码匹配器,这也就意味着保存在同一个库中密码可以使用多种加密方式。

{bcrypt}$2a$10$p0JC.ofpM8RxVTSubkKLDOUloGrQAX.lx/67HwnnyumATT69mwYm2

第一部分为加密方式的特征码,支持的类型如上图,第二部分为密文。 OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享  附上官方文档介绍:https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released#password-storage-updated

RedisTokenStore bug

当授权Auth-Server 配置token 保存在redis 时,报了下面的错误。

NoSuchMethodError.RedisConnection.set([B[B)V #16

Finchley.RELEASE 依赖的版本为 2.2.X版本。

<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
    <version>2.2.X</version>
</dependency>

升级到 2.3.3版本即可解决Redis操作问题

<!--spring security 、oauth、jwt依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-security</artifactId>
    <exclusions>
        <!--旧版本 redis操作有问题-->
        <exclusion>
            <artifactId>spring-security-oauth2</artifactId>
            <groupId>org.springframework.security.oauth</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
    <version>2.3.3.RELEASE</version>
</dependency>

Spring Boot Admin 2.0.1

Spring Boot Admin 监控组件也发布了 兼容Finchley.RELEASE的 2.0.1版本,相较之前版本不同,当前版本需要和_spring security_配合使用 客户端: OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享  OAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>


/**
 * @author lengleng
 * @date 2018/6/22
 * 针对监控模块。全部放行
 */
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()
            .and().csrf().disable();
    }
}

详细使用我会再分享一篇关于 spring boot admin 2.0.X版本

写在最后

点赞
收藏
评论区
推荐文章
学python的猫 学python的猫
3年前
这些常见的坑,90%的程序猿都踩过,来看看里面有没有你的脚印?
在学习python的过程中,相信大家都有踩过不少的坑,有些坑可能踩了不止一次,感觉就像是在坑与坑之间反复横跳。那么如何避免这些坑呢?看完这篇文章,你就知道了。我们来谈谈我们学习python的过程中,最常见的七大坑:1.缩进,符号和空格不正确写代码时大家会使用缩进、对齐、空格等,这些是为了提高代码的可读性在python语言中,缩进是十分重要的比如在创建一个新
Stella981 Stella981
3年前
Spring Cloud:多环境配置、eureka 安全认证、容器宿主机IP注册
记录一下搭建SpringCloud过程中踩过的一些坑,测试的东西断断续续已经弄了好多了,一直没有时间整理搭建过程,时间啊~时间~Spring版本SpringBoot:2.0.6.RELEASESpringCloud:Finchley.SR2多环境配置切换使用Sp
Stella981 Stella981
3年前
Groovy防PermOOM与OldOOM心得
作为Groovy重度用户,踩了新版本因为无法unloadclass导致permoom的坑,踩了classLoader.parallelLockMap不断添加新锁导致oldoom的坑。本文的意图就是记录一点埋坑心得。踩坑详情可见:https://my.oschina.net/chenxiaojie/blog/835934(https://my.o
Stella981 Stella981
3年前
Feign2.0用Apache的Httpclient发送请求并配置连接池
主要是针对SpringCloud新出的版本(CloudFinchley.RC2与Springboot2.0.2.RELEASE),一些新的改动,与在使用中遇见的一些问题,踩过的坑,希望后面的人就不用踩了。服务注入到Eureka需要的MAVEN配置<dependency<groupId
Stella981 Stella981
3年前
SpringBoot整合升级Spring Security 报错 【The request was rejected because the URL was not normalized】
前言最近LZ给项目框架升级,从Spring1.x升级到Spring2.x,在这里就不多赘述两个版本之间的区别以及升级的原因。关于升级过程中踩的坑,在其他博文中会做比较详细的记录,以便给读者参考,不要掉进同样的坑里。这里我们讨论一个关于URL中包含双斜杠被拦截的问题。发现问题升级框架之后,测试一个功能时,发现报错Htt
Easter79 Easter79
3年前
SpringBoot整合升级Spring Security 报错 【The request was rejected because the URL was not normalized】
前言最近LZ给项目框架升级,从Spring1.x升级到Spring2.x,在这里就不多赘述两个版本之间的区别以及升级的原因。关于升级过程中踩的坑,在其他博文中会做比较详细的记录,以便给读者参考,不要掉进同样的坑里。这里我们讨论一个关于URL中包含双斜杠被拦截的问题。发现问题升级框架之后,测试一个功能时,发现报错Htt
Stella981 Stella981
3年前
Node.js 中使用 ECDSA 签名遇到的坑
文/Fenying最近有个朋友问我关于Node.js下使用ECDSA的问题,主要是使用Node.js的Crypto模块无法校验网络传输过来的签名结果。在踩坑无数后,终于搞清楚了原因。坑0x00:签名输出格式在排除了证书、消息不一致的可能之后,我开始对比使用Node.js签名的结果与网络传输过来的签
Stella981 Stella981
3年前
Spring Cloud 升级最新 Finchley 版本,踩了所有的坑!
!(https://oscimg.oschina.net/oscnet/13e0cb89842c47028da956b4e734c272.jpg)Java技术栈www.javastack.cn优秀的Java技术公众号(https://www.oschina.net/action/GoToLink?urlhttps%3A%
Stella981 Stella981
3年前
Spring Boot Admin 2 值得了解的新变化
6.19号,spring团队发布了期待已久的SpringCloudFinchley.RELEASE版本。期间SpringBootAdmin也发布了2.0.1兼容它,我在升级pig到Finchley.RELEASE的同时发现很多有意思的变化整理发出来关于pig:基于SpringCloud、oAut
linbojue linbojue
7个月前
超完整的Electron打包签名更新指南,这真是太酷啦!
大家好,我是多喝热水。在踩了数不清的坑之后,终于从0到1完成了一个桌面端应用,但万万没想到,最最痛苦的还不是开发过程,而是开发完成后的打包签名阶段,这真是踩坑踩麻了!!!超完整的Electron打包签名更新指南,这真是太酷啦!ok,踩坑归踩坑,收获也是不小