들어가며 JWT를 구현하고 있는데, 이번에는 에러 처리가 문제이다! 자꾸 토큰이 유효하지 않은데도 권한 에러인 401이 아니라 500 NullPointerException을 던져준다. 원인은 JWT의 플로우를 제대로 이해하지 못하고 있어서였다. 따라서 오늘의 TIL은 이 문제에 대한 트러블슈팅을 하고자 한다. JWT 401에러 보내기 우선 예외가 발생하는 클래스를 디버깅으로 찾아보았다. 원인은 AuthToken 클래스에서 Claim을 가져오는 메소드가 문제였다. 지금까지는 AuthToken 클래스에서 Claim을 가져올 때 예외가 발생하면 try-catch 문으로 예외처리를 해주고 있었다. AuthToken.java public Claims getTokenClaims() { try { return Jwt..
Study
들어가며 Postman은 ui도 깔끔하고, 잘 사용할 줄만 안다면 최강의 시너지를 발휘하는 프로그램이다. 잘 사용하지 못하면 이번처럼 삽질도 하겠지만... 오늘의 TIL은 postman을 사용하면서 새롭게 알게된 postman에서 cookie를 사용하는 방법을 정리한 글을 첨부하는 걸로 간단하게 끝내고자 한다. Postman cookie 설정 [Postman] postman에서 cookie 설정 [Postman] postman에서 cookie 설정 들어가며 소셜로그인을 구현하면서 postman으로는 소셜 로그인창으로는 redirect가 되지 않아 브라우저에서 로그인을 진행하고, refresh token을 쿠키로 받아왔다. 그리고나서 refresh token을 cookie에서 뽑 annajin.tistor..
들어가며 소셜로그인을 구현하면서 postman으로는 소셜 로그인창으로는 redirect가 되지 않아 브라우저에서 로그인을 진행하고, refresh token을 쿠키로 받아왔다. 그리고나서 refresh token을 cookie에서 뽑아와서 access token을 재발급 받는 api를 호출했는데, refresh token이 존재하지 않는다고 나오고 있었다. 코드가 잘못된 줄로만 알고 계속 구글링하고 고민하고 있었는데, 그 전까지는 눈에 들어오지 않았던 response의 cookie 탭... 애초에 쿠키는 브라우저에서만 받아왔으면서 postman에서 테스트를 하려니 cookie에는 아무것도 존재하지 않았다. 이번에는 postman에 cookie를 설정하는 방법을 알아보도록 하자. Postman에 cooki..
들어가며 spring security + jwt + OAuth2.0 조합은 정말 쉽지가 않다. 특히 security랑 jwt가 가장 어렵다..!! 오늘의 TIL은 소셜 로그인을 구현하면서 겪었던 트러블 슈팅을 작성해보고자 한다! 트러블 슈팅 문제 - 카카오 로그인에서 이메일이 넘어오지 않는 문제 카카오로 로그인을 시도했을 때, 이메일이 넘어오지 않아 DB에 default 값인 NO_EMAIL이 들어오고 있었다. 디버깅을 돌려보니 kakaoOAuth2UserInfo클래스에서 getEmail() 메소드로 이메일을 불러올 때 이메일을 받아오고 있지 못해서 생기는 문제였는데, 해당 메소드의 코드를 보면 key값이 kakao가 제공하는 response의 key값과 다르다. 문제의 코드 @Override publi..
들어가며 실전프로젝트 4주차도 막을 내렸다. 일주일동안 끝나지 않는 소셜로그인, JWT와의 싸움을 하기도 했고 에러 코드를 만들거나 예외처리, 응답값 통일 등등 여러가지 코드를 작성했다. 프로젝트가 점점 모습을 갖춰 갈 수록 욕심이 생기기도 하고 아쉬운 부분들이 눈에 보이기도 해서 남은 한 주동안 목표한 부분을 빨리 만들고 완성도를 높이는 작업을 하고 싶어진다. 오늘의 WIL은 지난 일주일 동안 작성한 삽질로그와 정리한 내용을 간단하게 되짚어보고, 한 주간의 회고록을 작성하고자 한다. OAuth2.0 [개발지식] OAuth2.0 [개발지식] OAuth2.0 들어가며 소셜 로그인을 구현하면서 OAuth2.0에 대해 공부를 하게 되었다. 사실 각 소셜로그인이 제공하는 API를 호출하기만 하면 간단하게 해결되..
문제상황 로그인 요청 후 cookie에 refresh token을 담아 보내주고 있는데, 로컬 서버에서 로컬 클라이언트로 테스트를 하면 정상적으로 cookie에 담겨서 보내지지만 배포 후 로컬 클라이언트로 테스트를 하면 보내지지 않는 문제가 있다. 해결과정 첫번째 시도 - SameSite 설정을 None으로 바꿔본다. same-site 옵션 csrf 공격을 방어하기 위한 옵션으로 같은 도메인에서만 쿠키를 전달하거나(strict) 안전한 요청인 get을 통하는 경우에만 쿠키를 전달(Lax)하자는 것이다. 이를 None으로 설정하면 보안 위협을 받을 수 있기 때문에 secure 옵션을 추가해주어야며, 실제로 사용하는 것이 아니라 개발 환경에서만 사용해야한다. 또, secure 옵션을 사용하기 위해서는 htt..
문제상황 회원가입한 유저의 권한을 DB에서 직접 ADMIN 으로 바꿔준 다음 ADMIN 권한을 가진 유저만 접근할 수 있는 api를 만들었는데, 여전히 유저의 권한이 USER 여서 접근할 수 없는 문제가 발생했다. 해결과정 디버깅을 돌려보니 DefaultOAuth2UserService 를 상속한 CustomOAuth2UserService 클래스의 loadUser 메소드에서 불러온 OAuth2User user = super.loadUser(userRequest); 의 user에서부터 이미 ROLE_TYPE 이미 USER 로 세팅되어 있었다. 해당 코드가 있는 전체 코드는 다음과 같다. CustomOAuth2UserService.java @Override public OAuth2User loadUser(OA..
들어가며 소셜 로그인을 구현하면서 OAuth2.0에 대해 공부를 하게 되었다. 사실 각 소셜로그인이 제공하는 API를 호출하기만 하면 간단하게 해결되지만 언제나 기초 지식은 중요하기 때문에 따로 정리해보고자 한다! 들어가기에 앞서 OAuth2.0에 대해 더욱 자세히 알고 싶다면 다음 문서를 읽어보자! RFC 6749 RFC 6749 - The OAuth 2.0 Authorization Framework datatracker.ietf.org OAuth2.0 OAuth2.0은 Open Authentication 2.0의 약자로 인증 및 권한 획득을 위한 업계 표준 프로토콜이다. OAuth2.0은 보안수준이 어느 정도 검증된 플랫폼의 API(ex. google, naver, kakao등)를 이용하여 사용자 인..
들어가며 실전 프로젝트의 MVP 중간발표까지 끝이 났다. 이제 정말로 최종 발표까지 완성을 향해 달릴 시간이다! 이번 주 WIL은 소소하지만 MVP를 개발하는 3주 동안 무슨 기술을 다뤘는 지 정리해보고자 한다. OAuth2.0를 이용한 소셜 로그인 [개발지식] OAuth2.0 [개발지식] OAuth2.0 들어가며 소셜 로그인을 구현하면서 OAuth2.0에 대해 공부를 하게 되었다. 사실 각 소셜로그인이 제공하는 API를 호출하기만 하면 간단하게 해결되지만 언제나 기초 지식은 중요하기 때문에 따로 annajin.tistory.com 카카오 로그인 DOCS Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 AP..
보호되어 있는 글입니다.
반응형