HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
네트워크
네트워크
/
💻
인증/인가
/
OAuth2.0 Work Flow
OAuth2.0 Work Flow
OAuth2.0 Work Flow

OAuth2.0 Work Flow

 
소셜로그인 인증 방식인 OAuth 2.0 인증 방식에 대해 학습해보자!
‘내’가 ‘크롬 브라우저’로 ‘인프런’에 ‘카카오톡 로그인’으로 가입하여 이용하는 상황을 가정하겠습니다.
notion image
notion image
notion image
Definition
OAuth
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준 이다. - 위키백과
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준 이다. - 위키백과

Terminology

  • Resource Owner - 나
  • Consumer - 인프런
  • Service Provider - 카카오톡
 
  • scope - 성별, 연령대, 출생 연도, 생일
  • Client - 인프런 회원 가입 서버
  • Resource Server - 카카오톡의 성별, 연령대... 에대한 리소스 서버
  • Authorization Server - 카카오톡의 인가 서버
 
  • Redirect URI - 인가 과정을 성공적으로 수행한 경우 카카오톡의 인가 서버가 웹 브라우저를 리디렉션 시키는 인프런의 URL
  • Access Token 접근 토큰
    • 사용자 정보, 만료 시간, scope에 대한 정보 포함
    • 카카오톡의 인가 서버가 생성함
    • 카카오톡의 리소스 서버와 공유하는 DB에 저장하거나
    • 토큰 자체에 필요한 정보를 담는 방식도 활용 (e.g. JWT)
 

Protocol Flow

가장 널리 사용되고 안전한 방식인 Authorization code grant 방식의 flow를 살펴 보겠습니다.
notion image
 
(A) 인프런 회원가입 서버가 카카오톡의 인가 서버에 자신의 identifier(client_id), request scope 그리고 redirect URI를 보낸다.
요청 예시
요청 예시
 
(B) 카카오톡 인가 서버가 내 정보를 인증하고 인프런의 권한 지급 여부를 결정한다.
 
(C) 인가 서버는 내 ‘크롬 브라우저’를 redirect URI로 리디렉션 시킨다. url에 쿼리파라미터로 code 정보를 추가한다.
 
(D) 인프런 회원가입 서버는 카카오톡 인증서버로 identifier(client_id, client_secret) 전달 받은 code 와 상호 약속된 redirect URI정보를 보낸다
 
(E) 카카오톡 인증 서버는 identifier, code와 redirect URI 정보를 확인한 이후에 Access Token을 발급한다.
 
이후에 인프런의 서버는 Access Token을 활용하여 카카오톡의 리소스 서버에 ‘나’의 리소스 중 scope에 해당 되는 정보를 요청한다.