OAuth2.0이란?
Open Authorization 2.0의 준말로, 인증을 위한 개방형 표준 프로토콜입니다.
OAuth2.0 구성
- Resource Owner
- 리소스 소유자 또는 사용자, 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체, 클라이언트를 인증하는 역할, 인증이 완료되면 권한 획득 자격을 클라이언트에게 부여하는 주체
- 일반적으로는 리소스 소유자가 권한을 부여하지만 권한 서버가 리소스 소유자와 클라이언트 사이에서 중개 역할을 수행
- Client
- 보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션
- Resource Server
- 사용자의 보호된 자원을 호스팅하는 서버
- Authorization Server
- 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할 수행
OAuth2 프로토콜에서는 다양한 클라이언트 환경에 적합하도록 권한 부여 방식에 따른 프로토콜을 4가지 종류로 구분하여 제공하고 있습니다.
Authorization Code Grant 권한 부여 승인 코드 방식
- 권한 부여 승인을 위한 자체 생성한 Autorization Code를 전달하는 방식, 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식
Implicit Grant 암죽적 승인 방식
- 자격 증명을 안전하게 저장하기 힘든 클라이언트에게 최적화된 방식
- 권한 부여 승인 코드 없이 바로 Access Token이 발급됩니다. 만료 기간을 짧게 설정하여 누출의 위험 줄일 수 있습니다.
- RefreshToken 사용이 불가능한 방식
- 권한 서버는 client-secret을 사용해 클라이언트를 인증하지 않음.
- accessToken을 획득하기 위한 절차가 간소화 되기에 응답성과 효율성을 높아지지만 accessToken을 URL로 전달된다는 단점 존재
Resource Owner Password Credentials Grant 자원 소유자 자격증명 승인 방식
- 간단하게 username, password로 accessToken을 받는 방식
- 클라이언트가 타사의 외부 프로그램일 경우에는 이 방식을 적용하면 안됩닌다.
- 자신의 서비스에서 제공하는 어플리케이션일 경우에만 사용되는 인증 방식.
- RefreshToken 사용 가능
Client Credentials Grant 클라이언트 자격증명 승인 방식