본문 바로가기

개발일지/TIL

[230807] Java Security AutoConfigure가 될 때 Https Port 매핑

Security AutoConfigure시 Https Port 이슈

✔ 이슈

💢 Java Spring Boot를 통해서 기본 구조만 갖추고 https를 적용해 봤다. 그런데 http일 때는 브라우저를 통해 서버에 정상적으로 접근이 가능했는데 https를 적용하니 접근이 안 되는 문제가 발생했다.

 

 

✔ 원인 분석

💬 브라우저에서 요청 시 https://domain:8080이 https://domain:8443으로 리다이렉트 되는 것을 발견했다. Port 리다이렉트 되는 것을 중심으로 원인을 알아보기로 했다.

💬 찾아본 결과 Security AutoConfigure를 사용할 시 https에 매핑된 포트로 변경이 된다는 것을 알게 되었다. 80 포트의 경우 443으로 매핑이 되고 8080 포트의 경우 8443으로 매핑이 된다. Java Spring Boot에서 제공하는 내장 tomcat을 사용하면 기본 Port가 8080이기에 Security에 의해 8443으로 리다이렉트가 되었던 것이다.

 

 

✔ 원인 분석 - 참고 

 

Web Application Security :: Spring Security

Adds support for concurrent session control, allowing limits to be placed on the number of active sessions a user can have. A ConcurrentSessionFilter will be created, and a ConcurrentSessionControlAuthenticationStrategy will be used with the SessionManagem

docs.spring.io

 

✔ 해결 방법

💬 해결 방법은 Java Spring Security은 AutoConfigure를 사용하지 않거나 자바 애플리케이션 서버를 8443 포트로 띄우는 것이다.
      ➡ Java Spring Security 설정을 수동으로 하기 
      ➡ 애플리케이션을 실행할 때 AutoConfigure를 제외
      ➡ application.properties에 Server Port를 8443으로 설정

💬 로그인 및 회원가입 구현 때 Java Spring Security를 수동 설정을 한다. 그 이전에 API 기능 구현시 Security가 제약이 되지 않도록 두 번째 방법을 통해 해결을 하기로 했다.  

✅ 애플리케이션 실행할 때 Security AutoConfigure 제외

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)​