본문 바로가기
프로젝트

구글 로그인 아키텍처 설계 (Spring Boot + MongoDB)

by 더하리 2025. 5. 11.

 

구글 소셜 로그인을 Spring Boot와 MongoDB기반으로

어떻게 설계하고 구현였는지, 그리고 프론트엔드와 백엔드 간

책인 분리 관점에서 개선한 방식을 소개해보려 합니다.


 

 

1. 프론트와 백엔드의 책임 분리

🔹기존 설계

프론트엔드가 직접 Google OAuth URI를 생성하여 요청

구글 로그인 후, 인증 코드를 프론트가 받아서 백엔드에 전달

 

🔸개선 방식 (Spring Security 기반)

- 프론트는 /oauth2/authorization/google로 요청만 보냄

- Spring Security가 구글과의 인증 흐름 전부 처리

 

✔️비교

- 기존 설계에서는 인증 코드 탈취 가능성이 증가함 

- 개선 방식에서는 Spring Security가 구글과의 인증 흐름 전부 처리 > 인증 코드 노출이 없음 (보안 강화)

 

 

 

2. 로그인 관련 도메인 설계

User

@Document("user")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    private String id;

    private String email;
    private String userName;
    private Provider provider;
    private boolean isGuest = false; //게스트모드 여부

    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

enum Provider {
    KAKAO, GOOGLE
}

 

UserToken (Refresh Token 저장)

@Data
@Document("user_token")
@AllArgsConstructor
@NoArgsConstructor
public class UserToken {

    @Id
    private String id;

    private String userId;

    private String refreshToken;
    private LocalDateTime issuedAt;
    private LocalDateTime expiresAt;

    public static UserToken issueFor(User user, String refreshToken) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime expiresAt = user.isGuest()? now.plusDays(1): now.plusDays(14);
        return new UserToken(null, user.getId(), refreshToken, now, expiresAt);
    }
}

 

 

구현은 이어서 하도록 하겠습니다~!

 

 

*참고 자료*

 

[springboot] 구글 로그인 api 연동

먼저, 구글 서비스에 신규 서비스를 행성해야 한다. 여기서 발급된 인증 정보(clientId와 clientSecret)를 통해서 로그인 기능과 소셜 서비스 기능을 사용할 수 있으니 무조건 발급받고 시작해야 한다.

choihjhj.tistory.com

 

 

스프링부트로 Google OAuth 2.0 개발하기

OAuth 란 개발 환경 JDK 17 Spring boot 버전 : 3.0.6 PostgreSQL : 14.0 사용 플러그인 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementatio

dev-annals.tistory.com

 

 

구글 로그인 google oauth2 - 프론트 및 백엔드 별도

1. Google Cloud Console 접속:https://console.cloud.google.com/ 에 접속합니다.Google 계정으로 로그인합니다.2. 프로젝트 선택 또는 생성:기존 프로젝트가 있다면 선택합니다.새 프로젝트를 만들려면 상단의 프

juntcom.tistory.com