OAuth 2.0(Open Authorization 2.0)
- 인증을 위한 개방형 표준 프로토콜
- 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대해
→ Third-Party 프로그램에게 접근 권한을 위임하는 방식
OAuth 2.0 주요 용어
# Authentication
- 인증, 접근 자격이 있는지 검증하는 단계
# Authorization
- 인가, 자원에 접근할 권한을 부여하는 것
- 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여됨
# Access Token
- 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 Token
- 만료 기간이 있음
# Refresh Token
- Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token
- 일반적으로 Access Token 보다 만료 기간이 김
OAuth 2.0 요소
# Resource Owner
- 리소스 소유자
- 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체
- 클라이언트를 인증하는 역할을 수행
- 클라이언트가 제공하는 서비스를 이용하려는 사용자
# Client
- 보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션
# Resource Server
- 사용자의 보호된 자원을 호스팅하는 서버 (구글, 네이버 등)
# Authorization Server
- 권한 서버
- 인증/인가를 수행하는 서버
- 클라이언트의 접근 자격을 확인 (ID, PW 등)
- Access Token을 발급하여 권한을 부여하는 역할
OAuth 2.0 부여 유형
1. Authorization Code Grant ( 권한 부여 승인 코드 방식)
- 기본이 되는 방식
- 권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식
- 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식 (간편 로그인 등)
- 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용
→ 클라이언트의 비밀을 안전하게 보관할 수 있는 환경에서 사용
- Refresh Token 사용 가능
2. Implicit Grant (암묵적 승인 방식)
- 자격증명을 안전하게 저장하기 힘든 클라이언트에게 최적화된 방식 (JavaScript 등)
- 권한 부여 승인 코드 없이 바로 Access Token 발급
- Access Token 만료기간 짧음
- Refresh Token 사용 불가능
3. Resource Owner Password Credentials Grant ( 자원 소유자 자격증명 승인 방식)
- 간단하게 username, password 로 Access Token 을 받는 방식
- 클라이언트가 타사의 외부 프로그램일 경우 이 방식 적용 X
- 자신의 서비스에서 제공되는 어플리케이션일 경우 사용
- Refresh Token 사용 가능
4. Client Credentials Grant (클라이언트 자격증명 승인 방식)
- 클라이언트의 자격증명으로 Access Token을 획득하는 방식
- 클라이언트 자체의 리소스에 접근할 때 주로 사용
- Refresh Token 사용 불가능