개발/Backend

시작하며 이번에 새롭게 사이드프로젝트를 진행하면서 백엔드 언어로 코틀린을 선정했다. 자바랑 여러가지 차이가 있고 뭐가 장점이고 하는 의사결정 과정이 중요한건 아니고, 중요한건 코틀린으로 언어를 바꾸면서 기존에 만들었던 코드를 다시 짜야 한다는 것이다. JWT 발행이나 인증, Intercepter 같은 기능들이 만들어놓은지 몇년 됐으니 이참에 새롭게 갈아엎자고 생각했다. 기존에 [Spring Boot] 인터셉터 인증 처리 제외 어노테이션 만들기 이런 글을 올린 적이 있었는데 주석에 기재된 날짜를 보니 벌써 3년 전이다. 아까워 하지 말고 전부 버리고 새로 만들기로 했다. 기존에는 JWT 발행 라이브러리로 com.auth0/java-jwt를 사용했었는데 코틀린으로 언어를 변경하면서 io.jsonwebtoke..
이 글을 보는 분들이라면 다들 알겠지만 Log4J2 라이브러리에 취약점이 보고되었다. 참고: CVE-2021-44228 스프링부트는 기본적으로 기본 로그 시스템을 Log4J2로 변경했을때만 해당이 된다고 한다. 취약점에 대한 뉴스를 접하자마자 github의 pom.xml부터 확인했었고, 해당사항이 없는 걸 보고 안심한채 주말내내 불구경하는 마음으로 구경했었는데... 출근 후 확인해보니 디펜던시 걸린 다른 라이브러리에서 Log4J2를 사용하고 있었다. ./mvnw dependency:list | select-string -pattern log4j 나에게 사용하고 있는 라이브러리의 업데이트를 기다릴 시간따윈 없다. 강제로 버전을 올리는 방법을 알아보자 1. Maven 사용시 2.15.0 pom.xml의 pr..
개발을 하다보면 API 호출시 사용자의 인증정보를 체크할 필요성이 생긴다. 하지만 모든 API에 인증 체크 코드를 넣어두기엔 유지보수도 힘들고 같은 코드가 모든 메소드에 반복되게 되니 보통은 요청이 넘어오기 전에 Interceptor를 둬서 인증 체크하고 실제 메소드로 넘겨주는 방법을 사용하게 된다. 아래는 예전에 인터셉터를 구성했던 코드를 가져와봤다. JwtAuthInterceptor.java package me.huiya.core.Config; import me.huiya.core.Common.JWTManager; import me.huiya.Exception.AuthRequiredException; import org.springframework.web.servlet.HandlerIntercepto..
https://blog.huiya.me/14 SpringBoot html 템플릿 메일 보내기 - Thymeleaf 스프링부트에서 메일을 보내야 할 필요가 생겼다. 개발하면서 필요했던 요구사항은 아래와 같다. 가입 환영 메일, 이메일 인증 메일, 기타 등등 여러 종류의 메일 발송 가능할것. 단순 텍스트 blog.huiya.me 이 글에서 메일 보내기를 구현하고 나니 메일을 비동기로 보내야겠다는 생각이 들었다. 기존 프로젝트에서 가입과 메일 보내는걸 동기적으로 처리했다가 한참동안 기다려야 했던 기억이 나서 이번에는 꼭 스레드를 써봐야겠다고 마음을 먹었다. 그래서 찾아보니 SpringBoot에서는 쓰레드 생성이 어렵지 않았다. 예전에는 테스크 잡인가 뭔가 해서 진짜 복잡하게 돌렸던 기억이 나는데... 역시 스..
스프링부트에서 메일을 보내야 할 필요가 생겼다. 개발하면서 필요했던 요구사항은 아래와 같다. 가입 환영 메일, 이메일 인증 메일, 기타 등등 여러 종류의 메일 발송 가능할것. 단순 텍스트 이메일이 아니라 html로 구성되어 디자인이 가능할 것. 코드가 복잡하지 않고 확장성 있을 것 열심히 찾아보던 중 thymeleaf라는 라이브러리를 찾게 되었다. 사용법이 간단해 공유해보고자 한다. 1. Maven dependency(pom.xml) 설정 org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-thymeleaf 2. src/main/resources/application.properties ..
React 개발을 시작하면서 PHP로 Restfull API 서버를 구성했다. React는 dev 모드로 로컬호스트에서 실행되고 있고, 서버는 실서버를 바라보게 설정했다. api 서버도 로컬에 테스트로 열어놓으면 좋겠지만 PHP로 구성되어 있어서 (Spring이면 로컬에서 돌렸을텐데) 귀찮음에 항복하고 실서버를 바라보게 설정해버렸다. 로컬호스트에서 실행되는 스크립트가 실제 도메인을 가진 서버를 바라보고 있으니 당연히 CORS 에러가 발생했다. *CORS에 대한 글 그런데 Access-Control-Allow-Origin 헤더를 넣어도 GET을 제외한 POST, PUT, DELETE에서 CORS에러가 발생하고 있었다. 그 이유는 React에서 api를 호출하기 위해 Axios를 사용하고 있었는데, Axio..
2019-04-30 17:05 최초 작성 아파치 시작/종료 시점에 스크립트를 실행해야할 필요성이 생겼다. 시작/종료 시 추가적인 작업이 필요했다. 그러던 중 리눅스 서비스에 추가적인 옵션 등록으로 해결 가능하다는 사실을 발견했다. 리눅스 서비스 옵션이기 때문에 해당 파일만 잘 선택한다면 아파치가 아닌 Nginx도 같은 방법으로 설정 가능하다. 참고 링크 https://unix.stackexchange.com/questions/368271/how-can-i-run-a-command-upon-a-systemd-service-unit-being-disabled https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStopPost= ..
2019-04-18 14:54 최초 작성 차기버전 개발 시작에 앞서 새로운 설치 패키지를 만들며 PHP 버전을 7.3.4로 올렸다. (기존 7.2.6) 인터넷에 떠도는 글은 많지만 대부분 7.0 혹은 7.2를 대상으로 한 글이기 때문에 7.3에는 사용할 수 없었다. 혹은 아파치 기반이라 PHP를 설치하려고 하면 의존성으로 httpd가 묶여있어 사용할 수가 없었다. 그러던 중 아래와 같은 글을 찾아서 설치 과정을 기록한다. Nginx + PHP 7.1 연동 - https://cjwoov.tistory.com/7 PHP 7.3 Repository - https://blog.remirepo.net/post/2018/12/10/Install-PHP-7.3-on-CentOS-RHEL-or-Fedora Nginx ..
2019-02-22 17:50 최초작성 2019-02-25 15:08 SSL 인증서와 실제 Hostname이 같지 않다는 오류 해결책 추가 2019-02-27 15:06 self-signed SSL이 아니라 공인 SSL 사용시 적용법 추가 기존 패키지로 설치한 아파치에 CC 적용을 위해 사설 SSL 인증서를 만들어 적용시켰다. ssl.sh 스크립트를 돌려 인증서를 생성한다. 참고 링크 - https://www.lesstif.com/pages/viewpage.action?pageId=6979614 (self-signed 인증서를 생성하는 스크립트) 링크 내용과 동일하니 링크를 참조해도 된다 아파치에 SSL 모듈을 설치한다. yum install mod_ssl -y 모듈 설치 확인은 apachectl -M ..
HuiYa
'개발/Backend' 카테고리의 글 목록