개발/Node.js

[Node.js] OAuth 2.0

xuwon 2024. 11. 20. 02:39
OAuth 2.0이란?

사용자의 자원에 대한 액세스를 제한된 범위에서 제3자 애플리케이션이 안전하게 수행할 수 있도록 허용하는 인증 및 권한 부여 프로토콜

이 프로토콜은 사용자가 비밀번호와 같은 민감한 정보를 노출하지 않고 클라이언트가 이 사용자 데이터를 요청할 수 있게 한다.

 

 

OAuth 2.0의 구성 요소

 

1. Resource Owner
- 데이터를 소유하고 있는 사용자

2. Client
- 자원 소유자의 데이터를 액세스하려는 제 3자 애플리케이션

3. Authorization Server
- 자원 소유자의 인증과 권한 부여를 관리하는 서버

4. Resource Server
- 자원 소유자의 데이터를 실제로 호스팅하는 서버

5. Access Token
- 클라이언트가 자원 서버에 요청을 보낼 때 사용하는 키
- 제한된 권한과 유효 기간을 가진다.

6. Authorization Code
- 클라이언트가 Access Token을 발급받기 위해 Authorization Server에서 일시적으로 발급받는 코드

 

OAuth 2.0의 흐름 과정

1. 사용자 인증 및 권한 부여 요청
- 클라이언트 → Resource Owner : 권한 요청
- 사용자는 브라우저를 통해 Authorization Server의 인증 화면으로 리디렉션

2. 인가 코드 발급
- 사용자가 권한을 승인하면
- Authorization Server → 클라이언트 : Authorization Code 발급

3. 액세스 토큰 발급
- 클라이언트 → Authorization Server : 인가 코드 전달
- 클라이언트는 Access Token을 발급 받음.

4. 자원 서버 요청
- 클라이언트 → Resource Server : Access Token을 사용하여 데이터 요청

5. 데이터 제공
- Resource Server → 클라이언트 : Access Token 확인 후 데이터 제공

 

Authorization Code

OAuth 2.0 프로세스에서 Access Token을 발급받기 위한 임시 코드

클라이언트가 직접 자격 증명을 사용하지 않고 Authorization Server를 통해 안전하게 토큰을 교환할 수 있도록 설계!


특징

1. 클라이언트가 Authorization Server로부터 받고, 사용자에겐 노출 X

2. 짧은 수명을 가지며, 한 번만 사용 가능

3. 주요 Authorization Code Grant Type에서 사용됨.

 

OAuth 2.0의 활용 예시

1. Google 로그인
2. 페이스북 공유