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|
| |
+------------------+
複製代碼
直接使用原有代碼報錯:bash
passwordencoder mapped for the id null
複製代碼
// 舊
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// 新
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
複製代碼
在 Finchley 版本中, 出於安全性的緣由,修改了PasswordEncoder 的生成和使用方法。
在注入bean 的時候不能顯示指定PasswordEncoder的實現類,類比舊方法。只能經過工廠類來建立 app
PasswordEncoderFactories.createDelegatingPasswordEncoder();
複製代碼
經過傳入密碼的特徵碼,動態去獲取密碼匹配器,這也就意味着保存在同一個庫中密碼能夠使用多種加密方式。
{bcrypt}$2a$10$p0JC.ofpM8RxVTSubkKLDOUloGrQAX.lx/67HwnnyumATT69mwYm2
複製代碼
第一部分爲加密方式的特徵碼,支持的類型如上圖,第二部分爲密文。 ide
附上官方文檔介紹:https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released#password-storage-updated當受權Auth-Server 配置token 保存在redis 時,報了下面的錯誤。spring-boot
NoSuchMethodError.RedisConnection.set([B[B)V #16
複製代碼
Finchley.RELEASE 依賴的版本爲 2.2.X版本。ui
<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版本