OAuth 인증
2025. 5. 16. 13:11ㆍCoding Study/Node.js
OAuth란 무엇인가?
OAuth는 Open Authorization의 줄임말이다. 사용자의 인증을 이미 신뢰할 수 있는 다른 서비스가 대신해주는 인증 방식이다.
예를 들어, 구글 계정으로 다른 웹사이트에 로그인하는 경우를 떠올리면 된다. 이런 방식이 바로 OAuth의 대표적인 예시이다.
기존 회원가입 방식과의 차이점
어떤 웹사이트를 처음 이용할 때 보통은 이름, 아이디, 비밀번호 등 여러 정보를 직접 입력하여 회원가입을 해야 한다.
하지만 소셜 로그인을 활용하면 이런 과정을 생략할 수 있다. 이미 가입되어 있는 다른 서비스의 인증을 통해 로그인하기 때문이다.
이렇게 하면 사용자 입장에서는 정보를 일일이 입력하는 번거로움을 줄일 수 있고, 서비스 제공자 입장에서는 직접 회원 정보를 관리하지 않아도 되는 이점이 있다.
OAuth에 등장하는 주체
OAuth에는 다음과 같은 세 가지 주요 주체가 있다.
- 리소스 오너 (Resource Owner) : 정보의 주인, 즉 사용자 자신이다.
- 애플리케이션 (Application) : 사용자가 새로 가입하려는 웹 서비스이며, 클라이언트와 서버로 나눌 수 있다.
- 리소스 서버 (Resource Server) : 사용자의 정보를 보관하고 있는 서버이다.
- 인증 서버 (Authorization Server) : 인증을 담당하며, 인증 코드를 발급하는 역할을 한다.
OAuth 인증 흐름 요약
- 사용자가 웹사이트에 접속한다.
- 소셜 로그인을 요청하면 애플리케이션이 인증 서버에 인증 요청을 보낸다.
- 인증 서버는 요청을 검토하고
- 인증이 가능하면 Authorization Code를 애플리케이션에 전달한다.
- 애플리케이션은 받은 인증 코드를 다시 인증 서버에 보내어 Access Token을 요청한다.
- 인증 서버는 이 코드가 유효하다고 판단되면
- access token을 발급한다.
- 애플리케이션은 받은 access token을 리소스 서버에 보내고, 사용자 정보를 요청한다.
- 리소스 서버는 토큰을 검증한 후
- 사용자 정보를 애플리케이션에 전달한다.

클라이언트와 서버를 나누었을 때의 흐름
이번에는 애플리케이션을 클라이언트와 서버로 구분하여 OAuth 흐름을 살펴본다.
- 사용자가 웹사이트(클라이언트)에 접속하여 소셜 로그인을 시도한다.
- 클라이언트는 인증 서버에 인증 요청을 보낸다.
- 인증 서버는 사용자에게 권한 동의를 요청하고
- 동의가 완료되면 Authorization Code를 클라이언트에 전달한다.
- 클라이언트는 받은 코드를 서버로 전달한다.
- 서버는 인증 서버에 코드를 다시 전송하여 Access Token을 요청한다.
- 인증서버에서는 확인하고
- Access Token 을 발급하여 전달한다.
- Access Token을 발급받은 서버는 이를 사용하여 리소스 서버에 사용자 정보를 요청한다.
- 리소스 서버는 access token을 검증하고
- 사용자 정보를 서버에 전달한다.
- 서버는 받은 사용자 정보를 클라이언트로 전달한다.
- 클라이언트는 사용자 정보를 활용하여 화면을 렌더링한다.

'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 |