>  기사  >  Java  >  Spring Boot 2.x 기반의 Finchley 버전 분석

Spring Boot 2.x 기반의 Finchley 버전 분석

php是最好的语言
php是最好的语言원래의
2018-08-09 17:27:111996검색

Spring Boot 2.x가 출시된 지 오래되었고 이제 Spring Cloud도 Spring Boot 2.x를 기반으로 한 Finchley 버전을 출시했습니다. 이제 프로젝트의 전반적인 프레임워크 업그레이드를 진행해 보겠습니다.

업그레이드 전 => 업그레이드 후

Spring Boot 1.5.x => Spring Boot 2.0.2

Spring Cloud Edgware SR4 => Spring Cloud Finchley.RELEASE

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 클라이언트를 업그레이드해야 하며, 기타 종속 항목은 변경되지 않았습니다.

Eureka 클라이언트 종속성 업데이트

업그레이드 전:

<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

Spring Cloud가 서비스 클라이언트 IP 주소를 가져오기 때문에 등록 센터의 클라이언트 인스턴스 IP가 올바르지 않습니다. 구성이 변경되었습니다.

업그레이드 전:

${spring.cloud.client.ipAddress}

업그레이드 후:

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

Spring Security

일반 등록 센터 및 구성 센터는 보안 암호화를 사용하며 spring-boot-starter-security 구성 요소를 사용합니다. 업그레이드 두 가지 질문이 있습니다.

1. Spring Security의 매개변수가 변경되었기 때문에 사용자 이름과 비밀번호를spring-boot-starter-security 组件,升级后有几下两个问题。

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

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

升级前:

security:
  user:
    name:
    password:

升级后:

spring:
  security:
     user:
       name: 
       password:

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

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

Spring Boot 2.x 기반의 Finchley 버전 분석

因为 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、配置中心无法加解密

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

Spring Boot 2.x 기반의 Finchley 버전 분석

现在想变回之前的 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()

로그인할 수 없습니다. Spring Boot 2.x 기반의 Finchley 버전 분석

업그레이드 전:

spring-boot:run -Drun.profiles=profile1

업그레이드 후:

spring-boot:run -Dspring-boot.run.profiles=profile1

2. 등록 센터에 등록 인스턴스가 없습니다

그림과 같이 등록 인스턴스가 없으며 두 등록 센터는 서로 등록할 수 없습니다. .

Spring Boot 2.x 기반의 Finchley 버전 분석

Spring Security는 기본적으로 모든 CSRF 공격 방어를 활성화하므로 /eureka의 방어를 비활성화해야 합니다.

애플리케이션 항목 클래스에 무시된 구성 추가:

rrreee

3. 구성 센터는 암호화 또는 암호 해독할 수 없습니다.

업그레이드 후 액세스 구성 센터는 구성을 읽을 수 없으며, 구성 정보 액세스 구성 센터 링크가 직접 로그인 페이지로 이동했습니다.

Spring Boot 2.x 기반의 Finchley 버전 분석

이제 이전 기본 인증 방식으로 다시 변경하고 싶습니다. 소스 코드를 찾아보니 자동으로 구성되어 로그인 페이지로 이동했습니다. 이제 다시 작성해야 합니다.

자동 구성 소스 코드:
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
rrreee재작성 후: 🎜rrreee🎜실제로 아래 그림과 같이 formLogin()이 종료되어 이전 기본 인증 방식으로 돌아갔습니다. 🎜🎜🎜🎜🎜이제 다음 명령을 사용하여 다시 암호화하고 해독할 수 있습니다. 🎜🎜기본 인증을 복원한 후에는 구성 센터에 암호화된 연결이 필요했던 이전 서비스가 다시 정상적으로 실행될 수 있습니다. 🎜🎜Maven🎜🎜Spring Boot 2.x로 업그레이드한 후 Spring Boot의 Maven 시작 플러그인이 사용하기 쉽지 않다는 것을 알았습니다. 주로 프로필을 자유롭게 전환할 수 없기 때문입니다. 🎜🎜업그레이드 전: 🎜rrreee🎜업그레이드 후: 🎜rrreee🎜요약🎜🎜위는 모든 함정을 거친 후 요약한 솔루션입니다. 문제를 해결하는 실제 프로세스는 훨씬 더 복잡합니다. 버전 변경이 좀 크네요. 이번에는 Spring Cloud의 기본 종속성뿐만 아니라 등록 센터(Eureka Server) 및 구성 센터(Config Server)도 성공적으로 업그레이드되었습니다. 🎜🎜관련 권장 사항: 🎜🎜🎜Spring Boot 시작 프로세스 관련 소개🎜🎜🎜🎜Spring Boot의 단위 테스트에 대한 자세한 설명🎜🎜

위 내용은 Spring Boot 2.x 기반의 Finchley 버전 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.