0. OAuth 2.0
- Open Authorization 2.0
- 인증을 위한 개방형 표준
프로토콜
- Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공
- 구글, 페이스북, 카카오, 네이버 등 제공하는 간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능을 제공
1. OAuth 2.0 주요 용어
Authentication
Authorization
- 인가, 자원에 접근할 권한을 부여하는 것
- 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여 됨
Access Token
- 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료기간이 있는 Token
Refresh Token
- Access Token 만료 시 이를 갱신하기 위한 용도로 사용하는 Token
- Refresh Token은 일반적으로 Access Token보다 만료 기간이 김
2. OAuth 2.0의 4가지 역할
Resource owner
- 리소스 소유자
- 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체
- OAuth2 프로토콜 흐름에서 클라이언트를 인증(Authorize)하는 역할을 수행
- 개념적으론 리소스 소유자가 자격을 부여하는 것이지만, 일반적으로 권한 서버가 리소스 소유자와 클라이언트
- 유저(사용자)
Client(Application)
- 보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션
- e.g., 브라우저
Authorization Server
- 권한 서버
- 인증/인가를 수행하는 서버
- 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할을 수행
- e.g., Facebook, Google, Naver 등
Resource Server
- Client가 제어하고자 하는 자원을 보유하고 있는 서버
- 사용자의 보호된 자원을 호스팅하는 서버
- 회사 운영 서버(REST API)
Authorization code grant : 권한 부여 승인 코드 방식
- 가장 많이 쓰이고 기본이 되는 방식
- 권한 부여 승인을 위해 자체 생성한 Authorization code를 전달하는 방식
- 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용
- Refresh Token 사용 가능
- 과정 설명
- client : 권한 부여 승인 요청(response_type=code)
- authorization server :
- redirect_url에서 oauth 로그인
- authorization code -> (Authorization server API) access token으로 교환
참고