OAuth(Open Authorization)란?
OAuth는 비밀번호를 직접 제공하지 않고도 사용자가 타사 애플리케이션이나 웹사이트에 자신의 정보 접근 권한을 위임할 수 있게 해주는 인증 방식입니다.
✔️ 주요 특징
- 비밀번호 노출 없이 인증 및 권한 위임
- 사용자의 동의 하에 특정 리소스 접근 허용
- 구글, 페이스북, 트위터 등 다양한 서비스에서 사용
- RESTful API와 자주 함께 사용됨
🧩 주요 용어
| 용어 | 설명 |
|---|---|
| 사용자 (User) | 인증 대상이 되는 사람. 자신의 계정을 소유함 |
| 소비자 (Consumer / Client) | 사용자 대신 리소스에 접근하려는 애플리케이션 |
| 서비스 제공자 (Service Provider) | 실제 리소스를 제공하는 곳 (예: Google, Facebook 등) |
| 소비자 비밀번호 (Consumer Secret) | 소비자 앱을 서비스 제공자가 신뢰할 수 있도록 인증하기 위한 키 |
| 요청 토큰 (Request Token) | 사용자 인증 요청을 위한 임시 토큰 (OAuth 1.0) |
| 접근 토큰 (Access Token) | 인증이 완료된 후, 실제 API 요청에 사용되는 토큰 |
| 갱신 토큰 (Refresh Token) | Access Token이 만료되었을 때, 재발급 받기 위해 사용하는 토큰 (OAuth 2.0) |
🔄 OAuth 인증 과정 (일반적인 OAuth 2.0 기준)
1.소비자(Client)가 인증 요청
사용자에게 로그인 및 권한 요청 페이지 제공
2.사용자(User)가 동의
서비스 제공자에게 로그인 후, 애플리케이션이 특정 권한을 사용하는 데 동의
3.인가 코드 발급
서비스 제공자는 사용자 동의 후 인가 코드(Authorization Code)를 클라이언트에 전달
4.접근 토큰 요청
클라이언트는 인가 코드를 이용해 서비스 제공자에게 Access Token 요청
5.Access Token 발급
서비스 제공자는 Access Token(그리고 선택적으로 Refresh Token)을 발급
6.보호된 리소스 접근
클라이언트는 Access Token을 사용하여 보호된 사용자 정보에 접근
🔐 토큰의 종류
| 종류 | 특징 |
|---|---|
| Access Token | 인증된 요청을 위해 사용하는 토큰. 일반적으로 짧은 유효기간을 가짐 |
| Refresh Token | Access Token이 만료되었을 때 새로운 Access Token을 얻기 위해 사용. 상대적으로 긴 유효기간 |
🔁 OAuth 1.0 vs OAuth 2.0
| 항목 | OAuth 1.0 | OAuth 2.0 |
|---|---|---|
| 암호화 방식 | 암호화 서명 필요 | HTTPS 기반 |
| 복잡도 | 상대적으로 복잡 | 간단하고 유연함 |
| 사용 방식 | Request Token, Access Token | Authorization Code, Implicit, Password 등 여러 방식 지원 |
| 보안 | 자체 서명 필요 | SSL/TLS 의존 |
💡 실제 사용 예
- 사용자가 ‘구글로 로그인’ 버튼을 눌렀을 때, 구글 로그인 창이 뜨고 동의하면 해당 앱은 구글 프로필에 접근 가능
- 사용자가 트위터 계정을 다른 앱에 연동할 때도 OAuth 사용
Start the conversation