[Research] OAuth2

gimseonjin616·2021년 10월 18일
1

Research

목록 보기
2/8

OAuth란?

OAuth2(Open Authorization, Open Authentication 2)는 인증을 위한 표준 프로토콜

등장 배경

여러 서비스들의 확장(thirth party application)이 등장하면서 개인정보인 아이디와 패스워드를 제공하고 싶지 않기 때문에 JWT와 같은 AccessToken 방식의 OAuth가 등장하게 됐다. 그 후, 발전해가면서 OAuth 2.0이 등장했다.

용어 정리

용어설명
자원 소유자 (Resource Owner)보호된 자원에 대한 접근권한을 위임해 줄 수 있는 주체. 사람일 경우 사용자
클라이언트 (Client)자원 소유자의 허가를 받아 보호된 자원에 접근하려는 어플리케이션
인증 서버 (Authorization Server)자원 소유자의 인증 및 클라이언트의 권한 획득이 끝나면, 액세스 토큰을 발급해 주는 서버. (인증 서버와 자원 서버는 분리할 수도 있고, 하나의 서버가 두 역할을 할 수도 있다.)
자원 서버 (Resource Server)보호된 자원을 가지고 있는 서버. 액세스 토큰을 가진 요청에 대해 자원을 제공해줄 수 있음
접근 토큰(access token)인증 후에 클라이언트가 보호된 자원에 접근하기 위해 필요한 값

승인 방식

용어설명
Authorization Code Grant Type(권한 부여 코드 승인 타입)클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용됩니다. 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식
Implicit Grant Type(암시적 승인)권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식
Resource Owner Password Credentials Grant Type(리소스 소유자 암호 자격 증명 타입)클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식
Client Credentials Grant Type(클라이언트 자격 증명 타입)클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식

Authorization Code Grant Type

  • 서버사이드 코드로 인증하는 방식

  • 권한서버가 클라이언트와 리소스서버간의 중재역할.

  • Access Token을 바로 클라이언트로 전달하지 않아 잠재적 유출을 방지.

Implicit Grant Type

  • SPA(Single page Application) 이나 모바일 어플리케이션에서 이 방식을 사용하면 된다.

  • OAuth 2.0에서 가장 많이 사용되는 방식이다.

  • 권한코드 없이 바로 발급되서 보안에 취약

  • 주로 Read only인 서비스에 사용.

Resource Owner Password Credentials Grant Type

  • Client에 아이디/패스워드를 저장해 놓고 아이디/패스워드로 직접 access token을 받아오는 방식이다.

  • Client 를 믿을 수 없을 때에는 사용하기에 위험하기 때문에 API 서비스의 공식 어플리케이션이나 믿을 수 있는 Client에 한해서만 사용하는 것을 추천한다.

Client Credentials Grant Type

  • 어플리케이션이 Confidential Client일 때 id와 secret을 가지고 인증하는 방식이다.
profile
to be data engineer

0개의 댓글