OAuth 인증

2025. 5. 16. 13:11Coding Study/Node.js

OAuth란 무엇인가?

OAuth는 Open Authorization의 줄임말이다. 사용자의 인증을 이미 신뢰할 수 있는 다른 서비스가 대신해주는 인증 방식이다.
예를 들어, 구글 계정으로 다른 웹사이트에 로그인하는 경우를 떠올리면 된다. 이런 방식이 바로 OAuth의 대표적인 예시이다.

기존 회원가입 방식과의 차이점

어떤 웹사이트를 처음 이용할 때 보통은 이름, 아이디, 비밀번호 등 여러 정보를 직접 입력하여 회원가입을 해야 한다.
하지만 소셜 로그인을 활용하면 이런 과정을 생략할 수 있다. 이미 가입되어 있는 다른 서비스의 인증을 통해 로그인하기 때문이다.
이렇게 하면 사용자 입장에서는 정보를 일일이 입력하는 번거로움을 줄일 수 있고, 서비스 제공자 입장에서는 직접 회원 정보를 관리하지 않아도 되는 이점이 있다.

OAuth에 등장하는 주체

OAuth에는 다음과 같은 세 가지 주요 주체가 있다.

  • 리소스 오너 (Resource Owner) : 정보의 주인, 즉 사용자 자신이다.
  • 애플리케이션 (Application) : 사용자가 새로 가입하려는 웹 서비스이며, 클라이언트와 서버로 나눌 수 있다.
  • 리소스 서버 (Resource Server) : 사용자의 정보를 보관하고 있는 서버이다.
  • 인증 서버 (Authorization Server) : 인증을 담당하며, 인증 코드를 발급하는 역할을 한다.

OAuth 인증 흐름 요약

  1. 사용자가 웹사이트에 접속한다.
  2. 소셜 로그인을 요청하면 애플리케이션이 인증 서버에 인증 요청을 보낸다.
  3. 인증 서버는 요청을 검토하고
  4. 인증이 가능하면 Authorization Code를 애플리케이션에 전달한다.
  5. 애플리케이션은 받은 인증 코드를 다시 인증 서버에 보내어 Access Token을 요청한다.
  6. 인증 서버는 이 코드가 유효하다고 판단되면
  7. access token을 발급한다.
  8. 애플리케이션은 받은 access token을 리소스 서버에 보내고, 사용자 정보를 요청한다.
  9. 리소스 서버는 토큰을 검증한 후
  10. 사용자 정보를 애플리케이션에 전달한다.

 

 

클라이언트와 서버를 나누었을 때의 흐름

이번에는 애플리케이션을 클라이언트와 서버로 구분하여 OAuth 흐름을 살펴본다.

  1. 사용자가 웹사이트(클라이언트)에 접속하여 소셜 로그인을 시도한다.
  2. 클라이언트는 인증 서버에 인증 요청을 보낸다.
  3. 인증 서버는 사용자에게 권한 동의를 요청하고 
  4. 동의가 완료되면 Authorization Code를 클라이언트에 전달한다.
  5. 클라이언트는 받은 코드를 서버로 전달한다.
  6. 서버는 인증 서버에 코드를 다시 전송하여 Access Token을 요청한다.
  7. 인증서버에서는 확인하고
  8. Access Token 을 발급하여 전달한다.
  9. Access Token을 발급받은 서버는 이를 사용하여 리소스 서버에 사용자 정보를 요청한다.
  10. 리소스 서버는 access token을 검증하고
  11. 사용자 정보를 서버에 전달한다.
  12. 서버는 받은 사용자 정보를 클라이언트로 전달한다.
  13. 클라이언트는 사용자 정보를 활용하여 화면을 렌더링한다.

'Coding Study > Node.js' 카테고리의 다른 글

카카오 로그인 기능 구현  (0) 2025.05.16
token 인증방식  (0) 2025.05.15
Session  (0) 2025.05.14
cookie  (0) 2025.05.14
express / axios  (0) 2025.05.13