OAuth 2.0 이란?
인증을 위한 표준 프로토콜의 한 종류로 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법.
OAuth 용어
Resource Owner
액세스 중인 리소스의 유저
Client
Resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램
Resource server
client의 요청을 수락하고 응답할 수 있는 서버
Authorization server
Resource server가 액세스 토큰을 발급받는 서버
Authorization grant
클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명
Authorization code
access token을 발급받기 전에 필요한 code
Access token
보호된 리소스에 액세스하는 데 사용되는 credentials
Scope
주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위
Grant type 종류
Grant type이란 Client가 액세스 토큰을 얻는 방법을 뜻한다.
Authorization Code Grant Type
정의 : 액세스 토큰을 받아오기 위해 먼저 Authorization code를 받아 액세스 토큰과 교환하는 방법
특징:
- Authorization code 절차를 거치는 이유는 보안성 강화에 목적이 있다.
- Client에서 client-secret을 공유하고 액세스 토큰을 가지고 오는 것은 탈취될 위험이 있다.
그래서 Client에서는 authorization code만 받아 오고 Server에서 Access token 요청을 진행한다.
Refresh Token Grant Type
정의 : 일정 기간 유효 시간이 지나서 만료된 액세스 토큰을 편리하게 다시 받아오기 위해 사용하는 방법.
특징 :
- Access token보다 Refresh token의 유효 시간이 대체로 조금 더 길게 설정하기 때문에 가능하다.
- server마다 Refresh token에 대한 정책이 다 다르기 때문에 Refresh token을 사용하기 위해선 사용하고자 하는 server의 정책을 살펴볼 필요가 있다.
OAuth 공식문서
https://www.oauth.com/oauth2-servers/getting-ready/