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 之后,之前的服务需要加密连接配置中心的又正常运行了。

  • 相关阅读:
    Java 三大主流 工作流 学习
    有限状态机(FSM)的Java 学习FSM
    OSWorkFlow 学习
    三种分布式对象主流技术——COM、Java和COBRA
    Java对象池技术的原理及其实现
    tomcat,很多时候,可以在服务server.xml中可以实现一些效果
    理解Scala
    CAP原理和BASE思想
    Java 在PDF文档中绘制图形
    Java 处理PDF图章(印章)——图片图章、动态图章
  • 原文地址:https://www.cnblogs.com/yanming-work/p/10448386.html
Copyright © 2011-2022 走看看