전체 게시물
-
[Spring-Security] JWT 검증 시에 발생하는 예외는 ExceptionHandler에서 처리할 수 없다.스프링(spring) 2024. 8. 20. 14:52
1. 내가 기대했던 결과사용자가 Authorization 헤더에 Bearer 타입의 Access Token을 담아서 서버로 요청한다.서버에서 Access Token을 받아서 만료된 토큰인지 검증한다.만료된 토큰이라면 ExpiredJwtException 예외를 발생시킨다.@ExceptionHandler를 사용하여 예외를 핸들링한다.JWT 토큰을 검증하는 FilterdoInternal()에서 사용자의 요청을 가로챈다.HttpServletRequest에서 1-1에서 담은 Access Token을 가져온다.try문에서 parseToken()를 호출한다.validateToken()를 통해 토큰을 검증한다.이때, 토큰이 만료되었는지 확인한다.토큰이 만료되었다면 ExpiredException 예외가 발생한다.try-..
-
[Spring] Code Deploy 사용 시에 환경변수가 적용되지 않는 문제스프링(spring) 2024. 8. 13. 17:42
1. 프로젝트 환경Java 17SpringBoot 3.3.2Code Deploy기반 CI/CD 2. Code Deploy는 .bashrc 파일을 사용하지 못한다.CI/CD 파이프라인 구축을 위해 Code Deploy를 사용하였고, 빌드된 파일을 AWS EC2에서 실행하기 위해 .bashrc 파일에 환경변수 값을 등록하였다. EC2의 .bashrc에 환경변수를 등록하였으므로 빌드된 파일을 실행시켰을 때, 문제가 없을 것이라 생각했습니다. Github으로 코드를 push 하면 사진과 같이 문제없이 EC2로 jar 파일이 배포됩니다. AWS EC2의 .bashrc에 prod 환경에서 필요한 환경 변수 값을 저장하였고, 스프링 애플리케이션 실행 시에 사용하기를 기대하였습니다. 그러나… 스프링 애플리케이션 실행..
-
[Java] LockSupport와 ReentrantLocklegacy/Java 2024. 8. 5. 02:16
1. LockSupport1-1. LockSupport란?synchronized의 경우 임계 영역에 접근하지 못하고 대기 중인 스레드는 BLOCKED 상태가 된다. BLOCKED 상태는 다른 스레드에 의해 interrupt 될 수 없기 때문에 lock을 얻지 못하면 영원히 대기 상태로 유지한다.LockSupport는 무한 대기를 해결하기 위해서 대기 중인 스레드의 상태를 BLOCKED가 아닌 WAITING 이 되게 한다. WAITING 상태는 다른 스레드가 interrupt를 통해 깨우거나, 스스로가 시간을 정하여 깨어날 수 있다.1-2. LockSupport의 대표적인 기능park() : 현재 스레드를 WAITING 상태로 바꾼다.parkNanos(nanos) : 나노초 동안 현재 스레드를 TIMED_..
-
전공자의 정보처리기사 실기 1주일만에 합격하기 (94점 / 100점)etc 2024. 7. 29. 17:19
저는 컴퓨터공학 4학년 학부생이며 2024년도 2차 정기 기사 시험을 쳤습니다. 일주일 동안 어떻게 공부를 했는지 공유해보겠습니다.1. 공부 기간을 너무 길게 잡지 말자.저는 실기가 아닌 필기를 공부할 때 3주를 학습하였습니다. 당시에는 뭐가 그렇게 불안했는지 정보처리기사에서 요구하는 모든 내용을 완벽하게 이해해야겠다는 압박감이 있었습니다. 그래서 긴 시간을 잡고 공부를 하였는데, 막상 하다 보니 "아직 시간이 많이 남았으니 내일부터 하자", "이 내용은 나중에 하자" 이런 식으로 미루는 제 자신을 보았습니다. 이러한 경험을 바탕으로 실기를 칠 때는 준비 기간을 확 줄여서 한 번에 집중해서 끝내자 했던 것 같습니다. 물론 컴퓨터공학 지식이 부족한 경우 좀 더 기간을 잡으시는 게 좋을 것 같습니다...
-
[Spring] java.lang.NullPointerException: save(...) must not be nulllegacy/Spring 2024. 7. 17. 23:05
1. Mock 테스트를 위한 라이브러리 추가Mock 테스트를 위하여 gralde에 아래를 추가하였다.// MockitotestImplementation("org.mockito.kotlin:mockito-kotlin:4.0.0")testImplementation("org.mockito:mockito-core:4.0.0")testImplementation("org.junit.jupiter:junit-jupiter:5.8.2") 2. 서비스 레이어 작성게시물을 작성하는 코드를 작성한다.@Service@RequiredArgsConstructorclass DiaryService( private val diaryRepository: DiaryRepository) { @Transactional fun..
-
[Spring-Security] @AuthenticationPrincipal 객체에 null이 저장되는 문제스프링(spring) 2024. 7. 16. 21:20
1. 오류 발생 흐름1-1. 사용자가 로그인을 한다.로그인이 완료된 사용자의 인증 정보가 SecurityContext에 저장된다.1-2. 인증된 사용자가 HTTP 요청을 한다.인증이 완료된 사용자는 페이지를 이동하면서 HTTP 요청을 보낸다. 게시물 작성 페이지로 이동하기 위해서는 인증이 완료된 사용자이어야 하며, 더불어 작성 완료하기 위해서 또한 인증이 완료된 사용자이어야 한다.1-3. HTTP 요청 시에 인증된 사용자 정보를 가져올 수 없다.사용자가 게시물 작성 버튼을 누르면 인증 정보를 가져올 수 없다는 에러가 발생한다.아래 코드를 보면 createPost()의 매개변수에 @AuthenticationPrincipal 애너테이션을 사용하여 인증된 사용자 정보를 주입받고자 한다. 그러나 HTTP 요청이..