[Project] 사용자 프로필과 외부 계정 정보 연동
업데이트:
개요
사용자 프로필 응답에서 외부 계정 정보를 어떻게 사용할지 정리했다.
처음에는 API 서버가 인증 서버에서 받은 계정 정보를 저장할 수도 있다고 생각했다.
하지만 같은 정보를 여러 서버에 중복 저장하면 동기화 문제가 생길 수 있다.
그래서 저장하지 않고, 조회 시점에 인증 서버에서 가져오는 방식으로 바꿨다.
조회 흐름
흐름은 다음과 같다.
GET /users/me
-> API 서버가 인증 서버 계정 조회 API 호출
-> 필요한 값을 응답 필드에 매핑
API 서버 DB에는 해당 값을 따로 저장하지 않는다.
프로필 조회 요청이 들어왔을 때 인증 서버에서 최신 값을 조회해서 응답에 포함한다.
이 방식은 호출 비용이 조금 늘 수 있지만, 계정 정보의 중복 저장을 줄일 수 있다.
null 문제
작업 중 특정 응답에서 username이 null로 내려오는 문제가 있었다.
계정 조회 API에서는 정상인데 로그인/회원가입 응답에서는 빠지는 식이었다.
원인은 응답 생성 경로가 여러 개였기 때문이다.
같은 응답 객체라도 어떤 서비스 메서드를 타느냐에 따라 값이 다르게 채워지고 있었다.
그래서 로그인/회원가입 응답에서도 username을 채우도록 수정했다.
raw response 저장
외부 provider의 raw response 저장 방식도 확인했다.
처음에는 평문으로 저장하면 디버깅에 편할 수 있다.
하지만 raw response에는 민감 정보가 포함될 수 있다.
그래서 평문 저장이 아니라 암호화해서 저장하도록 바꿨다.
정리
이번 작업을 하며 외부 계정 정보는 어디까지 저장하고, 어디부터 조회할지 기준이 필요하다고 느꼈다.
중복 저장은 편하지만 동기화 문제가 생긴다.
반대로 조회 시점 연동은 호출 비용이 늘지만 데이터 원천을 명확히 할 수 있다.
현재 단계에서는 중복 저장을 줄이는 쪽이 더 적절하다고 판단했다.
댓글남기기