본문 바로가기
  • 개발하는 곰돌이

Development/Errors8

[WebClient] Spring WebClient로 HTTPS 통신하기(sun.security.provider.certpath.SunCertPathBuilderException 해결) 목차 시작하기 전에 이전에 Spring WebClient로 HTTPS를 사용하는 웹사이트에 연결을 시도할 때 SunCertPathBuilderException이 발생하는 것을 해결하기 위해 자바에서 신뢰하는 인증서 목록에 해당 서버의 인증서를 추가하는 것으로 해결하는 글을 작성한 적이 있다. 그 당시에는 WebClient를 사용하는 방법에 익숙치 않다보니 서버마다 인증서를 추출해서 신뢰하는 인증서 목록에 추가하는 비효율적인 방법을 사용했는데, 모든 환경에서 이런 복잡한 절차 없이 WebClient를 사용한 HTTPS 통신이 가능하다는 것을 알게 되어 정리하려고 한다. 주의사항 : 이 방법은 검증 없이 모든 인증서를 신뢰하게 만들기 때문에 실제 제품에서 함부로 사용하면 안된다. 아무 설정을 하지 않은 경우.. 2023. 7. 6.
[Spring Security] Spring Boot 3.0 이상에서 스프링 시큐리티 적용 시 H2 콘솔에 접속되지 않는 문제 해결 목차 문제의 상황 스프링부트 3.0.X 버전을 공부하면서 스프링 시큐리티와 JWT로 사용자 인증 기능을 설정해보기 위해 H2 DB에 사용자 정보를 저장해서 DB에 저장된 데이터를 토대로 테스트해보려고 했다. JWT를 사용했기 때문에 SessionCreationPolicy는 STATELESS로 설정했고, 로그인도 로그인 API를 호출해서 사용하기 위해 따로 formlogin() 없이 시큐리티 설정을 했다. @Configuration class SecurityConfig { private val allowedUrls = arrayOf("/", "/swagger-ui/**", "/v3/**", "/sign-up", "/sign-in", "/h2-console/**") @Bean fun filterChain(h.. 2023. 5. 19.
[Swagger] Spring Boot 3.0.X 버전에서 Swagger UI 접속 시 404 에러가 발생할 때 목차 문제의 배경 JPA 공부를 위해 스프링부트 프로젝트를 생성할 때 새로운 버전을 사용해보자는 마음으로 스프링부트 3.0.3 버전으로 프로젝트를 생성했다. 그리고 평소처럼 Springdoc의 스웨거 UI를 사용해서 API를 호출하려고 했는데 스웨거 문서에 접속하니까 404 에러가 반겨줬다. 그래들에 의존성은 기존처럼 implementation 'org.springdoc:springdoc-openapi-ui:1.6.11'를 추가해놨고, 아래와 같이 SwaggerConfig도 설정해놨고 애플리케이션 설정도 잡아놨는데 404 에러가 떠서 무엇이 문제인지 도저히 감을 잡지 못하고 있었다. 문제 해결 물론 JUnit5로 테스트를 하면 JPA를 테스트 해보는 것에 문제는 없지만, 실제로 API를 호출해보면서 JP.. 2023. 3. 7.
[WebFlux] WebClient를 사용하여 외부 API를 호출할 땐 인코딩을 주의해야 한다 문제의 배경 프로젝트 진행 중에 입력값의 유효성을 검사하기 위해 외부 API를 호출할 일이 있었다. 그런데 포스트맨이나 크롬 개발자 도구에서는 문제 없이 잘 호출되는 API가 막상 WebClient를 사용한 자바 프로덕션 코드로 호출을 하려고 해보니 자꾸 등록된 키가 아니라며 400 에러를 뿜어대서 일단은 동작하게 만들기 위해 Unirest로 구현을 한 상태였다. 원인 파악 return WebClient.create() .post() .uri("외부 API url") .body(BodyInserters.fromValue(param)) .retrieve() .BodyToMono(String.class) .block(); 에러 로그에서 계속 문제가 발생한다고 했던 부분이다. 처음에는 문제될 것이 없는데 왜 .. 2023. 2. 19.
[JUnit5] DB호출 테스트 중 발생한 No ParameterResolver registered for parameter in constructor 에러 해결 에러 발생 배경 JUnit5로 DB 호출 테스트를 하는 도중에 다음과 같은 에러가 발생했다. No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] in constructor [public com.settlement.controller.TestController(com.settlement.mapper.TestMapper)]. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] .. 2023. 1. 11.
[SSL] 외부 API 호출 중 발생한 unable to find valid certification path to requested target 에러 해결 에러 발생 배경 프로젝트 진행 중 외부 API를 호출하여 받아온 결과값을 가공해야할 일이 생겼다. 그래서 WebClient를 사용하여 외부 API를 호출하고 가공하여 진행하려고 했는데 다음과 같은 에러가 발생했다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuil.. 2023. 1. 2.
[Swagger] 스웨거 페이지 접속 시 Failed to load API definition. 에러 해결 API 테스트를 위해 스웨거를 이용하던 중에 위와 같은 에러가 뜨면서 인덱스 페이지에 접속되지 않는 문제가 발생했다. Fetch error undefined http://localhost:8080/v2/api-docs라는데 /v2/api-docs가 정의되지 않아서 불러올 수 없다고 한다. 실제로 해당 url로 접속해보면 에러 페이지가 반겨주는 것을 볼 수 있다. NPE가 떴는데 파라미터의 설정값 중에 null있다는 것 같다. 이랬던 파라미터 설정을 이렇게 paramType에 query를 설정해줬다. 정상적으로 실행된다. 2022. 12. 29.
[Spring Boot] Swagger를 적용했을 때 리다이렉트 에러가 발생하는 경우(javax.servlet.ServletException) Swagger2를 사용할 땐 컨트롤러의 메소드에서 "redirect:/swagger-ui.html"를 반환하여 Swagger 문서로 리다이렉트 해도 아무 문제가 없었는데 Swagger3을 사용하니 같은 방법을 썼을 때 javax.servlet.ServletException: Could not resolve view with name 'redirect:/swagger-ui/index.html' in servlet with name 'dispatcherServlet'라는 에러가 발생했다. 대충 요약하자면 redirect:/swagger-ui/index.html라는 서블릿이 없다는거다. 구글링을 해보니 Swagger 설정을 하는 Config 클래스에 다음 코드를 추가하면 된다고 한다. // Kotlin @Be.. 2022. 12. 22.