文档章节

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

冷冷gg
 冷冷gg
发布于 06/25 07:55
字数 730
阅读 2494
收藏 56
点赞 7
评论 6

背景

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的实现类,类比旧方法。只能通过工厂类来创建 image

PasswordEncoderFactories.createDelegatingPasswordEncoder();

image 通过传入密码的特征码,动态去获取密码匹配器,这也就意味着保存在同一个库中密码可以使用多种加密方式。

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

第一部分为加密方式的特征码,支持的类型如上图,第二部分为密文。 image 附上官方文档介绍: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***配合使用 客户端: image image

<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版本

写在最后

© 著作权归作者所有

共有 人打赏支持
冷冷gg
粉丝 299
博文 109
码字总数 49005
作品 1
潍坊
UI设计师
加载中

评论(6)

冷冷gg
冷冷gg
有了
youngjdong
youngjdong
仓库里的代码还没升级到 2.0.3 吧
刘亚涛
刘亚涛

引用来自“刘亚涛”的评论

请问以下,你那个图是用什么工具画的呢?

引用来自“冷冷gg”的评论

http://asciiflow.com/
哈哈 刚还在看你发在腾讯云上的文章。。。Spring Security OAuth 手机号码认证的那个
冷冷gg
冷冷gg

引用来自“刘亚涛”的评论

请问以下,你那个图是用什么工具画的呢?
http://asciiflow.com/
刘亚涛
刘亚涛
请问以下,你那个图是用什么工具画的呢?
Big_BoBo
Big_BoBo
Spring Cloud Finchley.RELEASE依赖的2.0.1没有遇到 scopedTarget.dataSource circular reference 无法启动的问题吗?
spring boot依赖手工指定到2.0.3就正常了
spring cloud项目升级到spring boot 2.0.3,Finchley.RELEASE后,登录异常了

最近在看一个开源的spring cloud项目,然后自己把spring boot 升级到2.0.3,spring cloud 升级到Finchley.RELEASE后登录一直报401,里面使用了spring security oauth2,折腾了好久都没有成功...

心浪微勃
前天
0
0
spring cloud项目升级到spring boot 2.0.3,Finchley.RELEASE后,登录异常了

最近在看一个开源的spring cloud项目,然后自己把spring boot 升级到2.0.3,spring cloud 升级到Finchley.RELEASE后登录一直报401,里面使用了spring security oauth2,折腾了好久都没有成功...

心浪微勃
前天
0
0
Roses 1.1 发布,更简洁的微服务解决方案

更新说明: Spring Cloud版本由Edgware SR3升级到Finchley版本 mybatis-plus升级到2.3版本 修复若干bug Roses简介: Roses基于Spring Boot 2, 是开源项目Guns(https://gitee.com/naan1993/...

stylefeng
07/02
0
0
spring-cloud 踩坑备注(spring-boot 2.0.1+spring-cloud Finchley.M9)

一、备注说明: 1.经过几天的努力,终于完成了一份简易的spring-cloud套餐。主要涉及: a.注册中心-eureka; b.配置中心-config; c.监控中心-turbine; d.路由中心-zuul; e.微服务-user用户...

阿弥陀佛!
04/27
0
0
Eureka学习(一)--Eureka 服务器

spring-cloud Netflix 的主要模块: 服务发现:Eureka 断路器/降级:Hystrix 智能路由:Zuul 负载均衡:Ribbon 本文章将学习Eureka服务器端。 第一步:搭建项目,配置 pom.xml 第二步:配置 ...

FinalSmart
07/12
0
0
springcloud学习二:服务的注册与发现

spring cloud 就是为快速开发分布式系统的,他提供了一些工具有配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等 springcloud开发是依赖springboot的 ...

zhqsdhr
07/14
0
0
聊聊spring cloud的LoadBalancerAutoConfiguration

序 本文主要研究一下spring cloud的LoadBalancerAutoConfiguration RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.0.0.RC2-sources.jar!/org/springframework/cloud/netflix/ribb......

go4it
前天
0
0
Spring Boot Admin 2 值得了解的新变化

6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 期间Spring Boot Admin 也发布了 2.0.1 兼容它,我在升级pig 到Finchley.RELEASE的同时 发现很多有意思的变化整理...

冷冷gg
07/03
0
1
Spring Cloud云架构 - commonservice-sso服务搭建(一)

前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservice-sso服务搭建,本节我们只是搭建commonservice-sso的基础平台,闲话少说,直接将...

明理萝
06/07
0
0
Spring Cloud Data Flow 1.5.1 GA 正式版发布

Spring Cloud Data Flow 发布了 1.5.1 GA 版本。 这是一个错误修复版本。服务器改进了流定义中特殊字符的处理,并在 Task 启动参数列表中传递了逗号分隔的字符串。 它应该与 Skipper 1.0.5....

局长
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部