6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。
重要变化:git
期间踩过几个坑,分享出来给大伙,主要是关于 Spring Cloud oAuth 部分redis
基于现有Spring Cloud 脚手架pig开始动手升级。spring
基于Spring Cloud、oAuth2.0开发基于Vue先后分离的开发平台,支持帐号、短信、SSO等多种登陆,提供配套视频开发教程。安全
+------------------+ | | | 1.5.12.RELEASE | | | +--------+---------+ | Spring Boot | v +------------------+ | | | 2.0.3.RELEASE | | | +------------------+
+------------------+ | | | Edgware.SR3 | | | +--------+---------+ | Srping Cloud | v +------------------+ | | | Finchley.RELEASE| | | +------------------+
直接使用原有代码报错:app
passwordencoder mapped for the id null
// 旧 @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } // 新 @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); }
在 Finchley 版本中, 出于安全性的缘由,修改了PasswordEncoder 的生成和使用方法。
在注入bean 的时候不能显示指定PasswordEncoder的实现类,类比旧方法。只能经过工厂类来建立ide
PasswordEncoderFactories.createDelegatingPasswordEncoder();
经过传入密码的特征码,动态去获取密码匹配器,这也就意味着保存在同一个库中密码能够使用多种加密方式。spring-boot
{bcrypt}$2a$10$p0JC.ofpM8RxVTSubkKLDOUloGrQAX.lx/67HwnnyumATT69mwYm2
第一部分为加密方式的特征码,支持的类型如上图,第二部分为密文。
附上官方文档介绍:https://spring.io/blog/2017/1...加密
当受权Auth-Server 配置token 保存在redis 时,报了下面的错误。spa
NoSuchMethodError.RedisConnection.set([B[B)V #16
Finchley.RELEASE 依赖的版本为 2.2.X版本。code
<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 监控组件也发布了
兼容Finchley.RELEASE的 2.0.1版本,相较以前版本不一样,当前版本须要和spring security配合使用
客户端:
<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版本