

필수적인 가계부 기능들이 거의 다 구현되긴 했지만 아직 로그인 기능이 없다. 즉 내가 쓰던 남이 쓰던 다 섞여버린다.
좀 쉽고 간단하게 구현하려고 직접 로그인 구현안하고 구글로그인으로만 인증을 구현해보기로했다.

주요 프로세스
5. 로그인 성공 시, 클라이언트는 내 API가 아니라 구글 인증서버와 다이렉트로 통신한다.
6. 구글 인증서버가 내 API로 code를 넘겨주면 해석해서 사용자 정보(고유 식별자, 이메일 등)를 가져올 수 있다.
6-1. 나는 구글 로그인만 구현할 거기 때문에, 구글 인증 콜백에서 구글 엑세스토큰, 리프레시토큰, 사용자고유식별자는 저장하지 않고 구글 이메일만 사용자 테이블에 저장한다. 첫번째 로그인한 유저의 경우 db에 존재하지 않기 때문에 새로 생성을 해야한다.
6-2. API가 jwt 엑세스토큰, 리프레시토큰을 생성한다. 사용자고유식별자(구글말고 내가 쓰는거), 엑세스토큰, 리프레시토큰을 토큰테이블에 저장한다.
6-3. 구글 콜백을 받는 API 컨트롤러에서 ControllerBase.Redirect객체를 리턴하여 웹서버로 이동한다(인도인 개발유튜브참고)

6-3. 웹서버는 엑세스토큰을 헤더에 담아서 인증이 필요한 자원을 요청한다(refresh 토큰 포함). http 인터셉터로 구현하면 편리하다.

나머지는 일반적인 jwt 인증과 동일하다.
예제는 많지만 내가 원하는 직접 로그인 구현안하고 구글로만 로그인 하는 예제는 찾기가 어려워서 참 많이 헤멨다.
참고
구글 oauth는 로컬 호스트 외의 ip 주소에서는 도메인이 필요하다. 서버비 아끼려고 집에 서버 구축해놨는데 도메인 사면 의미가 없어져서 무료 도메인 사이트에서 발급받아 쓰고 있다.
https://www.duckdns.org/domains
Duck DNS
Duck DNS free dynamic DNS hosted on AWS news: login with Reddit is no more - legal request support us: become a Patreon
www.duckdns.org
'사이드 프로젝트 > 가계부 앱 만들기' 카테고리의 다른 글
| [가계부 앱 개발 6] 구글 플레이스토어 배포하기 (0) | 2025.03.03 |
|---|---|
| [가게부 앱 개발 4] 안드로이드 앱 개발하기 (0) | 2025.01.28 |
| [가계부 앱 개발 3] 웹페이지 배포하기 (0) | 2025.01.21 |
| [가계부 앱 개발 2] API 배포하기 (2) | 2025.01.02 |
| [가계부 앱 개발 1] 맥으로 마리아 db 서버 구축하기 (2) | 2024.12.26 |