15주차 위클리 페이퍼 안내
Authorization Code를 활용하는 구글 소셜 로그인을 실행하기 까지 유저, 프론트엔드, 백엔드, OpenID Connect 프로바이더 사이에 어떤 과정을 거치는지 설명해 주세요.
사용자가 로그인 버튼을 클릭: 사용자가 웹사이트에서 ‘구글로 로그인’ 버튼을 클릭하면 이 과정이 시작됩니다.
프론트엔드가 OpenID Connect 프로바이더(이 경우 구글)에게 요청: 프론트엔드(웹사이트)는 사용자를 구글 로그인 페이지로 리다이렉트합니다. 이때, 프론트엔드는 'Authorization Code’를 요청하는데, 이 코드는 나중에 사용자를 인증하는 데 사용됩니다.
사용자가 구글에 로그인: 사용자는 구글 로그인 페이지에서 자신의 구글 계정으로 로그인합니다.
구글이 Authorization Code를 프론트엔드에게 전달: 사용자가 성공적으로 로그인하면, 구글은 사용자를 웹사이트로 다시 리다이렉트하면서 URL에 Authorization Code를 포함시킵니다.
프론트엔드가 Authorization Code를 백엔드에게 전달: 웹사이트는 이 Authorization Code를 받아서 백엔드(서버)에게 전달합니다.
백엔드가 Authorization Code를 구글에게 전달하고 Access Token을 받음: 백엔드는 이 Authorization Code를 다시 구글에게 보내고, 대신에 Access Token을 받습니다. 이 토큰은 사용자의 구글 계정에 대한 접근 권한을 나타냅니다.
백엔드가 Access Token을 사용하여 사용자 정보를 요청하고 받음: 마지막으로, 백엔드는 이 Access Token을 사용해서 구글에게 사용자 정보를 요청하고, 이 정보를 받아서 사용자를 인증하고 웹사이트에 로그인시킵니다.
구글 소셜 로그인: Authorization Code를 활용한 상세 과정
마치 친구와 함께 로그인하는 과정을 따라가는 것처럼 쉽게 이해할 수 있도록 예시를 사용했습니다.
주요 참여자:
- 나: 로그인을 시도하는 사용자
- 친구: 구글 로그인 서비스 (OpenID Connect Provider)
- 내 앱: 로그인 기능을 제공하는 앱 (프론트엔드 & 백엔드)
1단계: 로그인 시작
- 내 앱에서 "구글 로그인" 버튼을 누릅니다. (친구에게 인사를 건네고 싶어합니다.)
2단계: 친구에게 인증 요청
- 내 앱은 친구에게 인증 요청을 보냅니다. 이때, 앱 이름, 로그인 후 돌아갈 앱 주소 등 정보를 함께 전달합니다. (친구에게 내가 누구이고 어디로 돌아갈지 알려줍니다.)
3단계: 친구에게 로그인
- 친구는 로그인 페이지를 보여주고 로그인 정보를 입력하도록 요청합니다. (친구는 내가 진짜인지 확인하고 싶어합니다.)
- 로그인 후 친구는 사용자 정보 (이름, 이메일 등)와 앱에게 사용자를 인증하는 코드 (Authorization Code)를 제공합니다. (친구는 내 신분을 확인하고 앱에게 인증 코드를 줍니다.)
4단계: 앱에게 인증 코드 전달
- 내 앱은 친구로부터 받은 인증 코드를 사용하여 친구에게 사용자 인증을 요청합니다. (친구에게 인증 코드를 보여주고 내가 진짜인지 확인하도록 요청합니다.)
5단계: 앱 서버에서 토큰 발급 요청
- 내 앱 서버는 친구에게 인증 코드와 함께 앱 정보 (클라이언트 ID, 클라이언트 비밀번호)를 보내 사용자 토큰 (Access Token)과 새로고침 토큰 (Refresh Token)을 발급받습니다. (친구에게 인증 코드와 앱 정보를 보내 토큰을 요청합니다.)
6단계: 앱 서버에서 사용자 정보 확인 및 로그인 처리
- 내 앱 서버는 친구로부터 받은 토큰을 사용하여 사용자 정보를 확인합니다. (친구에게 토큰을 보여주고 내 신분을 확인합니다.)
- 사용자 정보가 일치하면 내 앱 서버는 로그인을 성공 처리하고 사용자에게 앱 기능을 제공합니다. (친구가 내 신분을 확인하고 앱 사용을 허용합니다.)
7단계: 로그인 유지 및 재사용
- 새로고침 토큰은 만료된 사용자 토큰을 새로 발급하는 데 사용됩니다. (친구에게 새로고침 토큰을 주면 나중에 다시 인증할 필요 없이 앱 사용을 허용합니다.)
예시:
- 나: 쇼핑몰 앱에서 구글 계정으로 로그인하고 싶습니다.
- 친구: 구글 로그인 서비스
- 내 앱: 쇼핑몰 앱 (프론트엔드 & 백엔드)
- 쇼핑몰 앱에서 "구글 로그인" 버튼을 누릅니다. (친구에게 인사를 건네고 싶어합니다.)
- 앱은 친구에게 인증 요청을 보내고 앱 이름과 로그인 후 돌아갈 쇼핑몰 주소를 전달합니다. (친구에게 내가 누구이고 어디로 돌아갈지 알려줍니다.)
- 친구는 로그인 페이지를 보여주고 로그인 정보를 입력하도록 요청합니다. (친구는 내가 진짜인지 확인하고 싶어합니다.)
- 로그인 후 친구는 내 이름, 이메일 정보와 함께 앱에게 인증 코드를 제공합니다. (친구는 내 신분을 확인하고 앱에게 인증 코드를 줍니다.)
- 앱은 친구로부터 받은 인증 코드를 사용하여 친구에게 사용자 인증을 요청합니다. (친구에게 인증 코드를 보여주고 내가 진짜인지 확인하도록 요청합니다.)