zoukankan      html  css  js  c++  java
  • Spring Cloud Finchley 版本注意事项

    Spring Cloud Edgware SR4 => Spring Cloud Finchley.RELEASE

    版本升级及其说明

    版本升级的主要对象:

    jdk:1.8 +

    maven 3.5.0+ ||  gradle 4.9

    spring boot: 2.0.4+

    spring cloud:Finchley.RELEASE

    注意:我之前用的是maven3.3.9版本,项目运行总有写奇怪的问题,后面换成maven3.6.0 ,但是仓库地址没换(存在以前3.3下载的jar)也一样有问题。后面改成新的仓库路径,从新下载jar就好了,能正常使用了。

    Eureka Server

    Eureka Server 依赖更新

    升级前:

    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
    

    升级后:

    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    

    Eureka Client

    因为配置中心需要作为服务注册到注册中心,所以需要升级 Eureka Client,其他依赖没有变动。

    Eureka Client 依赖更新

    升级前:

    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    

    升级后:

    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    

    Spring Cloud

    注册中心里面的客户端实例IP显示不正确

    因为 Spring Cloud 获取服务客户端 IP 地址配置变更了。

    升级前:

    ${spring.cloud.client.ipAddress}
    

    升级后:

    ${spring.cloud.client.ip-address}
    

    Spring Security

    一般注册中心、配置中心都会使用安全加密,就会依赖 spring-boot-starter-security 组件,升级后有几下两个问题。

    1、用户名和密码无法登录

    因为 Spring Security 的参数进行了变更。

    升级前:

    security:
      user:
        name:
        password:
    

    升级后:

    spring:
      security:
         user:
           name: 
           password:
    

    2、注册中心没有注册实例

    没有注册实例,两个注册中心无法互相注册。

    因为 Spring Security 默认开启了所有 CSRF 攻击防御,需要禁用 /eureka 的防御。

    在 Application 入口类增加忽略配置:

    @EnableWebSecurity
    static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    	@Override
    	protected void configure(HttpSecurity http) throws Exception {
    		http.csrf().ignoringAntMatchers("/eureka/**");
    		super.configure(http);
    	}
    }
    

    3、配置中心无法加解密

    升级后发现访问配置中心无法读取到配置,也无法加解密配置信息,访问配置中心链接直接跳转到了登录页面。

    现在想变回之前的 basic auth 认证方式,找源码发现是自动配置跳到了登录页面,现在重写一下。

    自动配置源码: org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)

    protected void configure(HttpSecurity http) throws Exception {
    	logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
    
    	http
    		.authorizeRequests()
    			.anyRequest().authenticated()
    			.and()
    		.formLogin().and()
    		.httpBasic();
    }
    

    重写之后:

    @EnableWebSecurity
    static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    	@Override
    	protected void configure(HttpSecurity http) throws Exception {
    		http.csrf().ignoringAntMatchers("/**").and().authorizeRequests().anyRequest()
    				.authenticated().and().httpBasic();
    	}
    
    }
    

    其实就是把 formLogin() 干掉了,又回到之前的 basic auth 认证方式。

    现在我们又可以使用以下命令加解密了。

    如解密: curl http://xx.xx.xx.xx:7100/decrypt -d secret -u user:password

    恢复 basic auth 之后,之前的服务需要加密连接配置中心的又正常运行了。

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/yanming-work/p/10448386.html
Copyright © 2011-2022 走看看