- [트러블 슈팅] redis 관련 문제 발생(2025.01.03)2025-01-03 23:34:41IOS 개발자 분들에게 문제 상황을 들었다. 현재 발생한 문제는 좋아요 & 좋아요 취소와 회원 상세 조회 api 의 응답값이 401 에러가 온다는 것이었다. 1. 좋아요 & 좋아요 취소 문제현재 좋아요 로직은 현재 사용자 아이디 값(= userId)과 좋아요할 회원 아이디(= likedId) 두 가지 값이 필수 값이다.userId를 key값으로 하고 value 값으로 likedId 로 Redis에 저장하고 있다. 만약 이미 좋아요 되어있는데 좋아요 api를 호출하거나if (Boolean.TRUE.equals(likeCountRedisTemplate.opsForSet().isMember(userLikesKey,likedId))) { throw new IllegalStateException("Alrea..
- [트러블 슈팅] 요청 값 Dto에 어떻게 매핑되는가2024-11-15 14:39:43문제 상황Controller@PostMapping("/save")public ApiResponse save(@RequestBody FcmTokenSaveRequestDto requestDto, @AuthenticationPrincipal UserDetails userDetails) { return ApiResponse.success(HttpStatus.OK, fcmTokenMemberService.save(requestDto, userDetails.getUsername()));} 문제 발생 DTO@Getter@RequiredArgsConstructorpublic class FcmTokenSaveRequestDto { private final ..
- [트러블 슈팅] JwtFilter와 Security Config의 동작 순서2024-10-16 15:08:461. 문제 상황첫 번째 문제: 현재 JwtFilter에서 헤더에 토큰 유무와 유효성 검사를 통해 예외 처리를 하는 코드를 작성하였는데Security Config에서 설정한 화이트 리스트 api 들도 JwtFilter를 거치면서 토큰이 없는데 유효성 검사가 동작하게 되면서헤더에 토큰이 없는 회원 가입 상태에서도 에러가 던져졌다.해결 시도.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider,objectMapper), UsernamePasswordAuthenticationFilter.class)인증필터 전에 JwtFilter를 실행시키도록 설정해서 그런가 하고 .addFilterAfter()로 실행해 보아도 결과는 같았다. 1. addFilterAfte..
- [트러블 슈팅] S3 HTTPS(443) 접근 문제2024-10-13 22:45:17문제상황S3에 올려둔 이미지 파일에 접근하는 로직을 구현 했었는데 개발서버에서는 접근이 안되는걸 확인로컬에서 테스트 결과 접근이 되는 것을 확인 추측현재 개발 서버가 라이트세일 내부에 구성되어 있음, 해당 라이트세일은 다른 팀원분이 관리하지만 s3는 내가 관리 중, 그렇기 때문에 혹시 EC2 보안그룹 설정에서 아웃바운드 규칙에 443 포트에 접근 허용이 안되어 있을거라 판단-> 하지만 얘기를 들어보니 라이트세일 자체에서 방화벽으로 모든 포트를 접근 허용해놨기 때문에 문제가 없다고 판단 해결도커 컨테이너를 한번 바꾼적이 있는데 이전에 쓰던 서버 컨테이너를 호스트모드가 아니라 브릿지네트워크로 컨테이너끼리 묶어놓기만해서 외부 api 호출이 안되었던 것-> 브릿지 네트워크로 묶어놓기만 했던 이유는 컨테이너 내부..
- [트러블 슈팅] ios랑 서버 연동 과정에서 401에러 발생2024-10-11 16:44:07requestHeader에 있는 AccessToken 을 받아오는 과정에서 401 에러가 발생해본 방법- requestHeader를 못받아오는지 확인 차 requestParam 으로 헤더 넘겨서 실행해봄 : X- 헤더에 Authorization: Bearer TOKEN 으로 되어있는데 공백 부분에서 인코딩 인식 문제인가 하고 Bearer- 으로 수정 : X 결론401 에러가 뜨려면 보통 토큰 인증 문제나 requestBody 쪽에서 문제가 있다는 건데헤더 쪽은 문제가 없는걸로 판단하여 Body를 살펴보니 문제를 발견하였다. 코드를 짤 때 Entity에 컬럼 길이를 따로 설정 안해놔서 디폴트 값으로 256자가 됐는데Json 코드 중 456자나 되는 값을 발견하였다.......다음부턴..length 설정을 ..
- Spring Security + JWT 토큰을 통한 로그인 구현2024-05-16 10:05:39현재 앱 개발을 위해 REST API를 사용 중인데 로그인한 사용자 정보를 Session에 저장하는 방식은 REST의 stateless를 위반하기 때문에 JWT를 선택하였다.JWTJWT(Json Web Token)은 일반적으로 클라이언트와 서버 통신 시 권한 인가(Authorization)을 위해 사용하는 토큰이다.JWT 이해하기기본 동작 원리는 간단하다.클라이언트에서 ID/PW를 통해 로그인 요청서버에서 DB에 해당 ID/PW를 가진 User가 있다면, Access Token과 Refresh Token을 발급해준다.클라이언트는 발급받은 Access Token을 헤더에 담아서 서버가 허용한 API를 사용할 수 있게 된다.Access Token & Refresh Token에 관한 정보는 여기를 클릭만약 R..