예전에 application.yml (or application.properties) 분리하는 방법에 대해 기술한적이 있다. Springboot application.yml (application.properties) 파일 분리방법 Springboot를 사용하면 기본적으로 사용할 수 있는 환경설정 파일은 application.properties이다. 작은 프로젝트에서는 이것만 사용해도 문제는 없지만 규모가 커지면 이 파일 하나에 설정을 관리하기 벅 oingdaddy.tistory.com springboot 2.4 이상버전부터는 위와 같은 방법을 사용하지 않아도 된다. (springboot 2.4 미만은 위의 글을 참조해서 설정한다.) 바로 spring.config.import 를 이용하여 여러개의 pro..
web 서버에서 간단히 id/pw 정보를 통해 인증을 하듯 Spring Security에서도 '약속된 계정'을 통해 인증을 할 수 있다. DB로부터 사용자 정보를 가지고 와서 하는 인증 개념은 아니고 최소한의 인증이라고 생각하면 된다. 하는 방법과 계정을 설정하는 방법에 대해서 알아보도록 하겠다. pom.xml (maven) org.springframework.boot spring-boot-starter-security pom.xml 에 위와 같이 spring-boot-starter-security dependency를 추가해주자. 끝이다. dependency만 추가해도 Spring Security에서 제공하는 가장 기본적인 인증이 바로 적용된다. 물론 custom loginform을 이용해서 로그인을 ..
ApplicationContext를 Util 클래스에서 가지고 와서 사용을 하고 싶었다. 그래서 다음과 같이 ApplicationContextAware를 impl하여 ApplicationContextProvider를 만들었다. @Component public class ApplicationContextProvider implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { applicationContext = ctx; } public st..
지난번에도 JWT 관련 인증 내용을 다룬적이 있었다. Spring Security + JWT 인증 초간단 연동 예제 Monolithic Architecture에서 Micro Service Architecture까지는 아니더라도 많은 부분이 API로 분리가 되고 이에 대한 인증의 필요성이 생겼다. Spring Security와 JWT를 이용하면 이런 API 서버간의 인증을 간단.. oingdaddy.tistory.com 초간단 연동 예제라고 했는데 뭐가 초간단이냐며 욕도 먹고 해서 이번에는 정말 다 빼고 내가 통신할 API 서버와 JWT 인증하는 부분에 대해서만 간략히 기술하려한다. Springboot로 샘플 프로젝트를 2개 만들었다. 하나는 API를 호출하는 역할을 하는 A 프로젝트, 다른 하나는 A로부..
지긋지긋.. log4j 관련 보안취약점이 끊임없이 나오고 있다. KISA 인터넷 보호나라&KrCERT KISA 인터넷 보호나라&KrCERT www.boho.or.kr 여기서 2021.12.29일자로 새로운 log4j 보안취약점 조치사항에 대해 잘 나와있다. 요약하자면 주요내용 Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44832) 영향을 받는 버전 CVE-2021-44832 - 2.0-beta9 ~ 2.17.0 버전 (Log4j 2.3.2, 2.12.4 제외) 대응방안 - Java 8 이상 : Log4j 2.17.1으로 업데이트 - Java 7 : Log4j 2.12.4으로 업데이트 (업데이트 예정, 참고사이트 [3] 참고) - Java 6 : Log4j 2.3.2으로 ..
최근 이슈가 되고 있는 log 관련 보안 이슈들은 많은 개발자들을 괴롭히고 있다. 치명적인 취약점이다 보니 빠른 조치가 이루어져야 하고 보안 종사자들이 빠르게 대응을 해서 이제 어떻게 조치를 해야 하는지 대략적인 윤곽이 나왔다. 필자도 log4j, log4j2, logback에 대한 조치내용을 전달받아 다음과 같이 조치를 하였다. log4j 그냥 log4j라고 하면 log4j 관련 라이브러리가 1.x 버전을 뜻한다. log4j는 JMSAppender를 사용하는가 안하는가가 관건이다. JMSAppender를 사용한다면 사용을 중지하거나 안전한 log4j2로 migration을 해야 한다. JMSAppender는 보통 log4j.xml에서 설정을 하지만 web.xml 같은 곳에서 log파일의 위치나 이름을 ..
servlet 3.0이 되면서 예전에 web.xml에서 하던 servlet에 대한 설정을 java config로 할 수 있다. 기본적으로는 이런 servlet에 대한 설정을 안해주면 springboot가 DispatcherServlet으로 처리를 한다. 하지만 때에 따라 다른 servlet을 태워야 하는 요청이 있을수도 있다. 이것을 하기 위한 방법은 다음과 같다. Application.java (springboot main class) @SpringBootApplication public class ApiApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(Api..
메인인 springboot app(app1)이 있고 front의 틀을 잡아주는 Tiles는 별도의 어플리케이션(app2)에 들어가 있다. app1에서는 app2에 대해 dependency를 걸고 있는 상황이다. app2가 jar로 app1에 library처럼 들어간 것이다. 그림으로 표현하자면 위와 같은 모습이다. tiles가 jar 형태로 배포가 되어야 하기에 webapp/WEB-INF 하위에 위치를 시킬 수 없어서 META-INF/resoureces/WEB-INF 하위에 tiles를 위치시켰다. IDE 상에서 dependency를 걸었을때는 다음과 같은 기본 설정으로도 잘 되었다. springboot + tiles 설정 (기본) @Bean public TilesConfigurer tilesConfig..