문제상황 로그인 요청 후 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..
들어가며 실전 프로젝트의 MVP 중간발표까지 끝이 났다. 이제 정말로 최종 발표까지 완성을 향해 달릴 시간이다! 이번 주 WIL은 소소하지만 MVP를 개발하는 3주 동안 무슨 기술을 다뤘는 지 정리해보고자 한다. OAuth2.0를 이용한 소셜 로그인 [개발지식] OAuth2.0 [개발지식] OAuth2.0 들어가며 소셜 로그인을 구현하면서 OAuth2.0에 대해 공부를 하게 되었다. 사실 각 소셜로그인이 제공하는 API를 호출하기만 하면 간단하게 해결되지만 언제나 기초 지식은 중요하기 때문에 따로 annajin.tistory.com 카카오 로그인 DOCS Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 AP..
들어가며 나 자신에 대해 많이 실망하게 된 한 주였다. 내가 맡은 부분을 다른 사람들은 시간 내에 해결하고 있는데, 나는 결국 일주일 안에 해결하지 못했다. 이번 한주의 WIL은 내가 맡은 '소셜로그인' 부분을 공부하면서 막혔던 부분에 대해 작성해보고자 한다. 소셜 로그인 우리 팀은 카카오, 네이버, 구글에서 제공하는 소셜 로그인 기능을 이용하고자 했고, 해당 부분을 내가 맡게 되었다. 로그인 방식 하나를 먼저 구현해두면 다른 부분은 거의 비슷하다는 말에 따라 가장 흔히 접하는 카카오 로그인부터 구현하고자 하였다. 그냥 로그인만 구현하고자 하면 다음과 같이 간단하게 구현할 수 있다. 카카오 소셜 로그인 카카오 소셜 로그인 flow Step1. 인가 코드 받기 서비스 서버가 카카오 인증 서버로 인가 코드 ..
들어가며 벌써 항해99를 시작한 지 49일차가 되었다. 이제 정말 얼마 남지 않았다는게 실감이 되면서, 앞으로의 실전프로젝트 기간이 걱정이 되면서도 프로젝트가 완성되었을 때의 기대감도 크다. 이번주 WIL 역시 항해99에서 제시해준 키워드 정리와, 이번 한 주간의 회고록을 작성해보고자 한다. CI/CD [개발지식] CI/CD란? [개발지식] CI/CD란? 들어가며 프로젝트를 진행하면서 CI/CD를 알고 이를 구현하는게 필요하고, 중요하다는 걸 느끼게 되었다. 일일히 프로젝트를 빌드하고 배포하는 과정이 매우 귀찮기도 하고, 협업을 하게 된다면 annajin.tistory.com CI/CD는 빌드, 테스트, 배포를 자동화함으로써 개발과 배포를 더 편하게 해준다. 회고록 잘 할 수 있겠지? 처음으로 해보는 제..
10시 전체 회의 첫 전체 회의가 있었다. 이번 회의에서는 어제 마무리하지 못한 기획에 대해서 어떤 문제점이 있고 어떻게 해결해야할 지 의논하는 시간을 가졌다. 본가에 내려갔다가 일찍 올라오는 일정이 있었어서 정신없는 와중에 회의에 참여하게 되는 바람에 문제점에 대한 확실한 의견을 내지 못해서 조금 아쉬웠다. 기획 피드백 기획에서 공공 API를 호출했을 때 문제점이 10시 회의에서 크게 나타났는데, 우선 API가 보내주는 데이터가 지저분한 바람에 우리가 원하는 대로 가공하기가 쉽지 않다는 점이 있었고 또, 유저가 API를 호출할 때 보내준 데이터를 유저에게 뿌려줌과 동시에 DB에 저장하고, 스케쥴러로 관리하려고 했는데 이 부분에서 중복 요청이나 테이블 관리를 하기 어렵다는 문제가 있었다. 고민에 고민을 ..
실전 프로젝트 시작 항해99 팀원들과, 슈퍼 팀원, 그리고 디자이너가 한 데 모였을 때, 어떻게 프로젝트의 시작을 잘 이끌어 나갈 수 있을 지 고민이 많았는데 모든 분들이 열정적으로 참여해주셔서 덜컹거리지 않고 수월하게 스타트를 끊었다. 기획 회의는 의견을 정말 다양하고 많이 내주셔서 투표로 정하게 되었는데, 최종적으로 선전된 주제는 [장애인을 위한 배리어프리 가게 찾기]가 되었다. 개발을 시작했을 때부터 꼭 한번 만들어보고 싶었던 주제였기에 이 주제로 프로젝트를 진행하게 되어서 내심 기분이 좋았다. 기획 회의 선정된 주제를 바탕으로 어떤 기능을 넣을 지를 중점으로 기획 회의를 진행했다. 동시에 그 기능을 구현하기 위해서 백엔드는 어떤 기술을 사용해야할 지도 함께 고민을 하였고, 여러가지 레퍼런스와 기술..
들어가며 실전프로젝트 D-1 아직도 주특기 주차 과제에서 해결하지 못한 부분이 많다는걸 뒤늦게야 깨달아서 마음이 조급해졌다. 빨리 서버를 만들어서 프론트와 연결해야한다는 생각에 사로잡히는 바람에 문제점들을 제대로 짚어내지 못한게 화근이었다. 당장 실전 프로젝트때 적용해야하는 부분들이기 때문에 미리 알아두었어야 하는 부분들인데... 아쉬움이 크게 남는다. 오늘의 TIL은 주특기 주차동안 해결하지 못했던 부분, 아쉬웠던 부분을 실전프로젝트 때 적용할 수 있도록 정리하고자 한다. 해결하지 못한 부분 테스트 코드 작성 개발의 기본이 되는 테스트 코드 작성. 중요한 부분이지만 다른 부분을 잡느라고 작성하지 못했다. 뒤늦게 테스트 코드를 잡으려고 하니 시간이 부족한 사태가 벌어졌다. 실전이 들어가기 전에 테스트 코..
들어가며 드디어 벼르고 벼르던 프록시와 지연/즉시 로딩의 정리가 끝이 났다. 하이버네이트를 선행하거나 JPA를 확실히 공부한게 아니라 Spring Data JPA를 이용해서 바로 활용단계로 넘어간 탓인지 이 개념에 대해 이해하고 내 언어로 정리하기가 상당히 어려웠다. 또, 이 개념을 알기 위해서는 선행에 선행해야하는 지식들이 꽤 있어서 그것들 먼저 정리하고 나중에 와서 정리해야지! 라고 생각하고 있었더니 더 막막해져서 다른 일을 우선순위로 두는 바람에 많이 늦어졌다. 그래도 시간을 들여서 이렇게 정리하고 나니까 확실히 전보다는 JPA에 한걸음 가까워진 기분이 든다. 역시 공부하는 건 재밌어! 오늘의 TIL은 열심히 정리한 프록시와 지연 로딩, 즉시 로딩에 관한 포스팅을 첨부하는 것으로 간단하게 끝내고자 ..