스프링 OAuth2 시작하기전 boot 버전별 변경사항 체크 (기록)
OAuth2 배우면서 각자 버전이 달라 버전별 특이사항을 적어놓은 기록장
제작 중인 프로젝트 환경
spring boot 2.7.0(최신 버전)
OAuth2으로 kakaoLogin 구현하기 앞서
(Mono , Controller , OAuth , config , 등등 oauth와 관련있는)
들을 가져왔다.
자료출처:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes
GitHub - spring-projects/spring-boot: Spring Boot
Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.
github.com
[2.0]
저지 및 WebFlux 지원
Spring MVC 및 JMX 지원 외에도 이제 순수 Jersey 또는 WebFlux 애플리케이션을 개발할 때 액추에이터 엔드포인트에 액세스 할 수 있습니다. Jersey 지원은 사용자 지정 Jersey를 통해 제공되며 ResourceWebFlux는 사용자 지정 HandlerMapping.
[2.1]
빈 재정의
실수로 빈을 재정의하지 않도록 빈 재정의는 기본적으로 비활성화되어 있습니다. 재정의에 의존하는 경우 spring.main.allow-bean-definition-overriding을 true로 설정해야 합니다.
@WebMvcTest and @WebFluxTest Security Configuration
이제 사용자 구성이 웹 조각 테스트에 자동으로 포함됩니다. @WebMvcTest는 WebSecurityConfigurer 빈을 찾는 반면 @WebFluxTest는 ServerHttpSecurity 빈을 찾습니다.
HttpPutFormContentFilter
HttpPutFormContentFilter는 FormContentFilter를 위해 더 이상 사용되지 않습니다. 결과적으로 spring.mvc.form 콘텐츠가 생성됩니다. putfilter.enabled 속성이 더 이상 정의되지 않습니다. 이 기능을 사용하고 있었다면 spring.mvc.form 내용으로 업데이트하십시오. filter.enabled.
OAuth2 클라이언트 구성
스프링의 구조입니다. security.oauth2.client.registration이 인증 코드 및 클라이언트 자격 증명 하위 네임스페이스가 아닌 단일 트리에서 다시 처리되었습니다.
OAuth2 WebFlux 지원
WebFlux OAuth2 로그인 지원이 추가되었습니다. OpenID Connect 제공자들은 발행자-uri를 사용하여 설정하기가 더 쉽다.
OAuth2 리소스 서버 지원
클래스 경로에 spring-security-oauth2-resource-server가 있는 경우, JWK Set URI가 지정된 한 Spring Boot은 OAuth2 Resource Server를 설정할 수 있습니다. 예를 들어:
spring.security.oauth2.resource.jwt.jwk.set-uri=https://example.com/oauth2/default/v1/keys
이 기능은 MVC 및 WebFlux 응용 프로그램 모두에서 지원됩니다.
웹이 아닌 OAuth 애플리케이션
애플리케이션 유형에 관계없이 자동 구성된 InMemoryReactiveClientRegistrationRepositorybean을 제공하므로 웹이 아닌 OAuth 애플리케이션을 쉽게 작성할 수 있습니다. 내장된 웹 서버(예: CLI 응용프로그램)를 사용하지 않는 응용프로그램을 작성하는 경우, 구성된 등록 리포지토리를 직접 주입하고 사용할 수 있습니다.
- 자동 구성된 WebServiceTemplateBuilder를 사용하여 WebServiceTemplate을 만드는 것이 더 쉽습니다.
- 더 이상 Jersey 지원을 활성화하기 위해 더미 ResourceConfig를 내보낼 필요가 없습니다.
[2.2]
HttpHiddenMethodFilter 기본적으로 비활성
_method request 매개 변수를 처리하는 필터는 이제 본문에 매개 변수가 포함될 수 있는 경우 요청 본문을 조기에 소모하므로 기본적으로 사용할 수 없습니다. 이것은 스프링을 설정하여 복원할 수 있습니다. webflux.hidden 메서드입니다. filter.enabled 또는 spring.mvc.hidden 메서드입니다.filter.enabled to true.
[2.3]
Spring 통합을 위한 RSocket 지원
웹 서비스에 대한 슬라이스 테스트 @WebServiceClientTest
[2.4]
Spring MVC 또는 Spring WebFlux를 사용하여 웹 로케일 및 리소스 위치의 구성을 지원하기 위해 속성이 추가되었습니다.
[2.5]
GET requests to actuator/startup
이제 액추에이터의 시작 끝점이 GET 요청을 지원합니다. POST 요청과 달리 엔드포인트에 대한 GET 요청은 이벤트 버퍼를 소모하지 않으며 이벤트는 메모리에 계속 유지됩니다.
[2.6]
Spring MVC를 위한 PathPattern 기반 경로 매칭 전략
등록된 Spring MVC 핸들러 매핑과 요청 경로를 일치시키는 기본 전략이 AntPathMatcher에서 PathPatternParser로 변경되었습니다.
Spring Security를 사용하는 경우 mvcMatchers 사용을 검토하여 짝꿍이 계속 사용자의 요구를 충족하는지 확인해야 합니다. AntPathMatcher를 사용하여 authorizRequests.mvcMatchers("hello")를 인증합니다. permitAll()은 /hello에 대한 액세스를 허용합니다. PathPatternParser를 보다 정확하게 일치시키려면 authorizedRequests.mvcMatchers("/hello")를 사용해야 합니다. permitAll()(주: /)을 대신 사용합니다.
기본값을 AntPathMatcher로 다시 전환해야 하는 경우 spring.mvc.pathmatch.matching-strategy를 ant-path-matcher로 설정할 수 있습니다.
이제 액추에이터 끝점에서도 PathPattern 기반 URL 일치를 사용합니다. 액추에이터 끝점에 대한 경로 일치 전략은 구성 속성을 통해 구성할 수 없습니다. 액추에이터와 스프링 폭스를 사용하는 경우 응용 프로그램을 시작하지 못할 수 있습니다. 자세한 내용은 이번 Springfox 호를 참조하십시오.
[2.7]
OkHttp 4
OkHttp 3이 더 이상 유지되지 않기 때문에 스프링 부트 2.7은 OkHTTP 4로 업그레이드되었다. version to tokhttp.version.
OkHttp 4는 OkHttp 3과 하위 호환되도록 설계되었습니다. 응용 프로그램에서 그렇지 않거나 다른 이유로 OkHttp 3을 계속 사용하려면 okttp를 구성하십시오. 버전 속성을 참조하십시오.
Elasticsearch의 RestHighLevelClient에 대한 지원이 더 이상 사용되지 않음
Elasticsearch가 Rest High Level Client를 더 이상 사용하지 않습니다. 이와 함께 Rest High Level Client를 위한 스프링 부트의 자동 구성은 더 이상 사용되지 않습니다. 가능한 경우 자동 구성된 낮은 수준의 Rest Client를 대신 사용해야 합니다. 또는 새 클라이언트를 수동으로 구성하는 것을 고려하십시오.
WebSecurityConfigurerAdapter에서 SecurityFilterChain으로 마이그레이션
Spring Boot 2.7은 WebSecurityConfigurerAdapter가 사용되지 않는 Spring Security 5.7로 업그레이드됩니다. WebSecurityConfigurerAdapter 없이 Spring Security를 구성하고 @WebMvcTest와 같은 Spring Boot의 슬라이스 테스트를 사용하는 경우 @보안 구성 클래스 가져오기를 통해 SecurityFilterChain 빈을 테스트에 사용할 수 있도록 응용 프로그램을 변경해야 할 수 있습니다. 자세한 내용은 참조 문서를 참조하십시오.
PEM 인코딩 인증서를 사용한 웹 서버 SSL 구성
속성 server.ssl.certificate 및 server.ssl.certificate-private-key와 선택적 server.ssl.trust-certificate 및 server.ssl.trust-certificate-private-key를 사용하여 PEM 인코딩 인증서 및 개인 키 파일과 함께 SSL을 사용하도록 내장 웹 서버를 구성할 수 있습니다. 관리 끝점은 유사한 management.server.ssl을 사용하여 보호할 수 있습니다.* 재산 예제는 설명서를 참조하십시오. 이 기능은 Java KeyStore 파일로 SSL을 구성하는 대신 제공됩니다.