文档章节

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

冷冷gg
 冷冷gg
发布于 06/25 07:55
字数 730
阅读 3316
收藏 0

背景

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
粉丝 413
博文 112
码字总数 52057
作品 1
潍坊
UI设计师
私信 提问
加载中

评论(7)

大道至简氵
我的项目POST /login会出现Request method 'POST' not supported请问哪里配置出了问题?
冷冷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,折腾了好久都没有成功...

心浪微勃
07/16
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,折腾了好久都没有成功...

心浪微勃
07/16
0
0
Spring Cloud 升级最新 Finchley 版本,踩了所有的坑!

Spring Boot 2.x 已经发布了很久,现在 Spring Cloud 也发布了 基于 Spring Boot 2.x 的 Finchley 版本,现在一起为项目做一次整体框架升级。 升级前 => 升级后 Spring Boot 1.5.x => Sprin...

Java技术栈
08/09
0
0
Spring Cloud Gateway 聚合swagger文档

关于pigX:全网最新的微服务脚手架,Spring Cloud Finchley、oAuth2的最佳实践 在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中...

gggggwww
07/20
0
0
Spring Cloud【Spring Security OAuth2 OSS logout 】单点登陆退出

导读 很久没有更新Spring Boot 系列文章了,这篇作为番外篇记录一下最近在使用Spring Security OAuth 登出的时候踩过的一些坑 及遇到的一些问题 期间查了许多资料 整理出了两种登出的方式 一...

yangrd
08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
0
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
2
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
0
0
Python的安装及文件类型、变量

一、为什么学习python 服务于大数据、人工智能、自动化运维。 简单易学 代码简洁 薪资高 近几年越来越火 二、Python的安装 linux 系统默认安装, CentOS7 默认安装了python2.7 安装ipython y...

枫叶云
昨天
1
0
JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理...

ThinkGem
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部