OAuth: 두 판 사이의 차이

기술노트
(CS 용어 정리 - OAuth 추가)
 
(Gemini 벌크 업로더로 자동 업로드)
 
1번째 줄: 1번째 줄:
=== OAuth ===
== 🔐 OAuth ==


> Open Authentification
'''OAuth'''는 인터넷 사용자들이 비밀번호를 직접 제공하지 않고도, '''다른 웹사이트나 애플리케이션의 자신의 정보에 대한 접근 권한을 안전하게 부여'''할 수 있는 개방형 표준 프로토콜입니다. 주로 소셜 로그인(Social Login) 기능에서 널리 사용됩니다.


인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수있는 개방형 표준 방법
OAuth는 '인증(Authentication)'이 아닌 '''허가(Authorization)'''를 위한 프로토콜입니다. 즉, "당신이 누구인지"를 증명하는 것이 아니라, "당신이 가진 특정 리소스에 접근해도 좋다"고 허락해주는 역할을 합니다.


<br>
----


이러한 매커니즘은 구글, 페이스북, 트위터 등이 사용하고 있으며 타사 애플리케이션 및 웹사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다.
=== 👥 OAuth의 주요 역할자 ===


<br>
* '''리소스 소유자 (Resource Owner)''' : 사용자 본인. 자신의 정보에 대한 접근 권한을 가집니다.
* '''클라이언트 (Client)''' : 리소스 소유자를 대신하여 보호된 리소스에 접근하려는 애플리케이션. (예: 우리가 개발하는 웹/앱 서비스)
* '''인증 서버 (Authorization Server)''' : 리소스 소유자를 인증하고, 클라이언트에게 접근 토큰(Access Token)을 발급해주는 서버. (예: 구글, 카카오의 인증 서버)
* '''리소스 서버 (Resource Server)''' : 보호된 리소스를 호스팅하는 서버. (예: 구글의 사용자 정보 API, 카카오의 메시지 API)


<br>
----


===== 사용 용어 =====
=== ⚙️ OAuth 2.0 동작 방식 (Authorization Code Grant) ===


---
가장 일반적인 소셜 로그인 시나리오입니다.


* '''사용자''' : 계정을 가지고 있는 개인
1.  사용자가 우리 서비스에서 "구글로 로그인" 버튼을 클릭합니다.
* '''소비자''' : OAuth를 사용해 서비스 제공자에게 접근하는 웹사이트 or 애플리케이션
2.  우리 서비스(클라이언트)는 사용자를 구글(인증 서버)의 로그인 페이지로 리디렉션시킵니다.
* '''서비스 제공자''' : OAuth를 통해 접근을 지원하는 웹 애플리케이션
3.  사용자는 구글에 아이디/비밀번호를 입력하고, 우리 서비스에 정보 제공을 동의합니다.
* '''소비자 비밀번호''' : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키
4.  구글은 사용자를 우리 서비스로 다시 리디렉션시키면서, 임시 '인증 코드(Authorization Code)'를 함께 보내줍니다.
* '''요청 토큰''' : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있음
5.  우리 서비스의 백엔드 서버는 이 인증 코드를 사용하여, 구글 인증 서버에 '접근 토큰(Access Token)'을 요청합니다.
* '''접근 토큰''' : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해 보호 자원에 접근하기 위한 키 값
6.  구글은 접근 토큰을 발급해주고, 우리 서비스는 이 토큰을 사용하여 구글의 리소스 서버로부터 사용자 정보를 가져와 로그인을 완료시킵니다.


<br>
----


토큰 종류로는 Access Token과 Refresh Token이 있다.
=== 💡 개발자 핵심 Point ===


Access Token은 만료시간이 있고 끝나면 다시 요청해야 한다. Refresh Token은 만료되면 아예 처음부터 진행해야 한다.
* OAuth를 사용하면 사용자의 민감한 비밀번호를 우리 서비스에 직접 저장할 필요가 없어 보안성이 크게 향상됩니다.
 
* "구글로 로그인", "카카오로 로그인"과 같은 기능을 구현하려면 OAuth 2.0 프로토콜에 대한 이해가 필수적입니다.
<br>
* '''Access Token'''은 실제 리소스에 접근할 수 있는 열쇠이며, 수명이 짧습니다. '''Refresh Token'''은 Access Token이 만료되었을 때 새로운 Access Token을 발급받기 위해 사용하는 토큰으로, 수명이 더 깁니다.
 
===== 인증 과정 =====
 
---
 
> 소비자 <-> 서비스 제공자
 
1. 소비자가 서비스 제공자에게 요청토큰을 요청한다.
2. 서비스 제공자가 소비자에게 요청토큰을 발급해준다.
3. 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
4. 서비스 제공자가 사용자를 소비자로 이동시킨다.
5. 소비자가 접근토큰을 요청한다.
6. 서비스제공자가 접근토큰을 발급한다.
7. 발급된 접근토큰을 이용해서 소비자에서 사용자 정보에 접근한다.
 
<br>

2025년 9월 6일 (토) 05:05 기준 최신판

🔐 OAuth

OAuth는 인터넷 사용자들이 비밀번호를 직접 제공하지 않고도, 다른 웹사이트나 애플리케이션의 자신의 정보에 대한 접근 권한을 안전하게 부여할 수 있는 개방형 표준 프로토콜입니다. 주로 소셜 로그인(Social Login) 기능에서 널리 사용됩니다.

OAuth는 '인증(Authentication)'이 아닌 허가(Authorization)를 위한 프로토콜입니다. 즉, "당신이 누구인지"를 증명하는 것이 아니라, "당신이 가진 특정 리소스에 접근해도 좋다"고 허락해주는 역할을 합니다.


👥 OAuth의 주요 역할자

  • 리소스 소유자 (Resource Owner) : 사용자 본인. 자신의 정보에 대한 접근 권한을 가집니다.
  • 클라이언트 (Client) : 리소스 소유자를 대신하여 보호된 리소스에 접근하려는 애플리케이션. (예: 우리가 개발하는 웹/앱 서비스)
  • 인증 서버 (Authorization Server) : 리소스 소유자를 인증하고, 클라이언트에게 접근 토큰(Access Token)을 발급해주는 서버. (예: 구글, 카카오의 인증 서버)
  • 리소스 서버 (Resource Server) : 보호된 리소스를 호스팅하는 서버. (예: 구글의 사용자 정보 API, 카카오의 메시지 API)

⚙️ OAuth 2.0 동작 방식 (Authorization Code Grant)

가장 일반적인 소셜 로그인 시나리오입니다.

1. 사용자가 우리 서비스에서 "구글로 로그인" 버튼을 클릭합니다. 2. 우리 서비스(클라이언트)는 사용자를 구글(인증 서버)의 로그인 페이지로 리디렉션시킵니다. 3. 사용자는 구글에 아이디/비밀번호를 입력하고, 우리 서비스에 정보 제공을 동의합니다. 4. 구글은 사용자를 우리 서비스로 다시 리디렉션시키면서, 임시 '인증 코드(Authorization Code)'를 함께 보내줍니다. 5. 우리 서비스의 백엔드 서버는 이 인증 코드를 사용하여, 구글 인증 서버에 '접근 토큰(Access Token)'을 요청합니다. 6. 구글은 접근 토큰을 발급해주고, 우리 서비스는 이 토큰을 사용하여 구글의 리소스 서버로부터 사용자 정보를 가져와 로그인을 완료시킵니다.


💡 개발자 핵심 Point

  • OAuth를 사용하면 사용자의 민감한 비밀번호를 우리 서비스에 직접 저장할 필요가 없어 보안성이 크게 향상됩니다.
  • "구글로 로그인", "카카오로 로그인"과 같은 기능을 구현하려면 OAuth 2.0 프로토콜에 대한 이해가 필수적입니다.
  • Access Token은 실제 리소스에 접근할 수 있는 열쇠이며, 수명이 짧습니다. Refresh Token은 Access Token이 만료되었을 때 새로운 Access Token을 발급받기 위해 사용하는 토큰으로, 수명이 더 깁니다.