목록개발/Spring_Boot (12)
개발자 되어버리기
만약 메소드 단위별로 시간을 측정하고싶다면 (혹은 그 외의 무언가 특수한 공통적인 목적이 있을경우) 해당코드를 응용하면 좋을 것 같다. import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Component public class TimeTraceAop { @Around("execution(* com.mydirectory..*(..))") public Object execute(ProceedingJoinPoint joinPo..
사내에서 프론트엔드와 클라이언트 단에서 토큰 로그아웃을 진행하였는데 무언가 오류가 나거나 토큰이 불필요하게 남아있게 될 경우를 대비에 토큰이 불필요한 API에 대해 토큰을 사용하지 않도록 필터링 하는 작업을 진행하게 되었습니다. 일단 기본적으로 밑에 글의 트래픽 인터셉트 글을 참고하시면 좋을 듯 합니다. koogood.tistory.com/32 SpringBoot 트래픽 제한하기 한번에 많은 요청이 오거나 혹은 문자인증을 하거나 또는 외부로부터 공격이 왔을 경우 내부의 자원을 보호하기 위해 대비책을 세워두면 좋습니다. 이번 포스팅에서는 Bucket4j를 이용하여 트래 koogood.tistory.com 우선 인터셉트에 필터 관련 코드를 추가합니다. @Component @Log4j2 @RequiredArg..
한번에 많은 요청이 오거나 혹은 문자인증을 하거나 또는 외부로부터 공격이 왔을 경우 내부의 자원을 보호하기 위해 대비책을 세워두면 좋습니다. 이번 포스팅에서는 Bucket4j를 이용하여 트래픽을 제한하는 포스팅을 해보고자 합니다. // 대역폭 제한 implementation 'com.giffing.bucket4j.spring.boot.starter:bucket4j-spring-boot-starter:0.2.0' 위와 같이 build.gradle에 라이브러리를 추가 해줍니다. import io.github.bucket4j.Bandwidth; import io.github.bucket4j.Bucket; import io.github.bucket4j.Bucket4j; import io.github.bucket..
JWT의 장점은 세션을 사용하지 않기에 서버의 자원을 효과적으로 사용할 수 있다는 것에 장점이 있습니다. 장점도 분명 존재하지만 단점도 있고 그 단점중 하나는 로그아웃에 관련된 내용입니다. 우선 도커를 이용해 간단하게 Redis를 설치해보겠습니다. Redis는 키-값 기반의 인메모리 기반 데이터베이스 입니다. 메모리에 직접 저장이 되기에 껐다키면 날라가지만 인메모리 특성상 매우 좋은 성능을 제공합니다. 서버컴은 껏다 킬 일이 없으니..? jwt같은거 사용할 때 많이 사용 합니다. 우선 도커가 설치되어 있지 않다면 우분투에 도커부터 설치를 진행해야 합니다. sudo apt install docker-ce 이후에는 가볍게 사용할 수 있는 Redis를 설치합니다. docker run -i -t --name r..
구글쪽 smtp 쓰는것은 많이 나와있고 생각보다 쉽습니다. 구글이 아닌 네이버 쪽은 어떻게 할지 간단하게 포스팅해보겠습니다. 1. 설정으로 들어갑니다. 2. 위 사진과 같이 설정을 해줍니다. 이후에는 yml에 네이버 계정 관련된 정보를 넣어줍니다. email: host: smtp.naver.com username: myId password: myPassword port: naverport 저희가 쓰는 포트는 465 포트 입니다. 그 다음은 yml 데이터를 읽어올 클래스를 작성 합니다. @Configuration // yml 파일에서 가져올 변수 이름을 명시해준다. @ConfigurationProperties(prefix = "email") @Setter @Getter public class Applica..
사내에서 문자 서비스를 구축해야해서 네이버 nens를 다루게 되었는데 제가 미숙한 탓에 헤더 세팅하는데 어려움이 있었습니다. (혼자 핑계로 네이버 API 헤더 세팅 어렵다고.. 꿍시렁) 부디 이 글 보시고 헤더 세팅하시는데 어려움을 덜어내셨으면 좋겠습니다. 저는 막상 저 예제만 보고는 잘 모르겠더라고요... 결론은 헤더의 내용을 암호화하여 다시 헤더에 넣어라! 이런 얘기더랍니다... 소스코드 부터 확인해보겠습니다. public String makeSignature(Long time) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException { String space = " ";// one space String n..
실제 서버에서 인증서 발급받고 그 인증서를 SFTP로 가져오자니 너무 귀찮고 번거롭더라고요.(로컬이니 최초 한번만 하면 되긴 하지만) 그래도 알아두면 좋은 지식인듯 하여 포스팅해두고자 합니다. 윈도우 WSL2 환경이나 아니면 인텔리제이 스프링부트 프로젝트 안에서 쓰셔도 무방합니다. keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 이후에 이거저거 입력하라고 나오는데 초기에 패스워드만 알맞게 입력하시면 나머지는 대충 하셔도 문제 없습니다. server: ssl: enabled: true key-store: keystore.p12 key-store-passw..
과거에는 거의 모든것이 세션기반이었기에 서버에 부담이 많이 갔었고 때문에 서버가 자주 장애를 일으키곤 했습니다. 하지만 요즘 추세는 세션기반보다는 JWT로 서버에 부담이 덜 가는 방식을 많이 사용하고 있습니다. RSA 키교환 방식으로 알고리즘을 RS256 으로 적용해보겠습니다. -- RS, HS 관련 혼동되는 것이 있어 추후에 수정하도록 하겠습니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:sp..