저번 포스팅에서 OAuth에는 여러 가지 인증 방식이 있다고 알려드렸는데, 오늘은 Authorization Code 인증 방식의 플로우에 대해 알아보도록 하겠습니다. OAuth에 대한 여러가지 인증 방식은 이전 포스팅을 참고하세요.

2022.05.26 - [개발자] - 상황별 OAuth grant_type의 사용

 

상황별 OAuth grant_type의 사용

저번 포스팅에서 OAuth에서는 다양한 인증 플로우가 있다는 것을 이야기 하였는데요, 이번에는 어떤 플로우를 사용해야하는지에 대해 알아보도록 하겠습니다. OAuth가 왜 이해하기 어려운지와 다

jedidev.tistory.com

Authorization Code Flow는 여러분의 사이트에서 카카오톡/네이버/페이스북 로그인을 지원하는 가장 일반적인 방법입니다. 아래 Flow의 Regular Web App이라 함은 Web Application 서버에서 돌아가는 어플리케이션을 뜻합니다.

OAuth 2.0 Authorization Code Flow

 

  1. 사용자가 로그인 또는 사인업 버튼을 클릭합니다.
  2. 웹 어플리케이션에서 카카오톡과 같은 로그인 페이지로 리다이렉트 시킵니다. 이때 Client ID 및 스코프가 포함되어 리다이렉트 URL을 구성합니다.
  3. 사용자가 비로그인 상태이면 로그인 페이지를, 로그인 상태이면 우리의 어플리케이션에게 사용자 정보를 제공해도 좋냐는 동의 페이지로 이동합니다.
  4. 사용자가 정보 제공에 동의합니다.
  5. 인증서버는 우리의 웹 어플리케이션으로 Authorization Code를 포함하여 다시 우리쪽 서버로 요청을 리다이렉트 시킵니다.
  6. 우리 어플리케이션은 Authorization Code와 Client ID, 그리고 Client Secret를 포함하여 다시 인증서버로 Access Token을 요청합니다.
  7. 인증서버의 Code, Client ID, Client Secret의 유효성을 검증합니다
  8. 인증서버에서 Access 토큰을 리턴합니다.
  9. 인증 서버로부터 받은 억세스 토큰을 헤더에 포함하여 사용자 정보를 요청합니다.
  10. API 서버는 토큰의 유효성 검증 후 사용자 정보를 반환합니다.

전체 Flow가 어려운 것은 아닌데, 리다이렉션이 여러번 일어나고 화살표가 리다이렉션을 의미하는지 아니면 Request에 대한 Response을 의미하는 것인지 조금 헷갈릴 수가 있습니다. Redirection은 3번과 5번에서 일어나고 그외에 인증 서버에서 내려오는 것은 Request에 대한 Response라고 보시면 됩니다.

다음 포스팅에서는 실제 카카오톡 로그인 기능을 .NET Core로 개발해 보도록 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기