소셜 로그인을 redirect + Set-Cookie 없이 할 수 있는 방법

  • 소셜 로그인을 redirect + Set-Cookie 없이 할 수 있게 하는 방법을 알아냄.
    • 인가코드 (또는 OAuth 액세스 토큰) 를 클라이언트가 받아서 백엔드 서버에 Authorization 헤더에 담아서 요청. (예시 엔드포인트 /google/receiver)
    • 백엔드는 인가코드 (또는 OAuth 액세스 토큰)이 첨부된 클라이언트의 요청을 받아 OAuth 서버에 토큰 검증 및 유저 정보 획득할 수 있음.
    • 유저 정보를 획득한 백엔드는 데이터베이스에 유저 존재 여부를 검사할 수 있고, 유저가 없다면 회원가입을, 있다면 로그인 로직을 수행하면 된다.
    • 마지막으로 백엔드는 리디렉션과 Set-Cookie 없이 JSON으로만 UserDto를 응답해주면 된다. 그 이유는 요청을 보낸 당시 웹 브라우저의 상태는 소셜 로그인이 아닌 서비스 페이지이기 때문이다.
sequenceDiagram
    participant Client
    participant Backend
    participant OAuth Server
    participant Database

    Client->>OAuth Server: Redirect to OAuth for authentication
    OAuth Server-->>Client: Return Authorization Code / OAuth Access Token

    Client->>Backend: Send Authorization Code / Access Token
    Backend->>OAuth Server: Validate Token and Request User Info

    OAuth Server-->>Backend: Return User Info
    Backend->>Database: Check if user exists
    Database-->>Backend: Return User Status (Exists/Not Exists)

    alt User Exists
        Backend->>Backend: Perform Login Logic
    else User Does Not Exist
        Backend->>Backend: Perform Registration Logic
    end

    Backend-->>Client: Return UserDto as JSON