OAuth2 그랜트 타입

hyeokjin·2022년 8월 18일
0
post-thumbnail

OAuth2

OAuth2는 애플리케이션이 사용자에게 자격 증명 공유를 강요하지 않고 사용자를 인증하고 권한을 부여할 수 있도록 다양한 메커니즘을 제공하는 유연한 권한부여 프레임워크다. 이러한 인증 메커니즘을 인증 그랜트라고한다.
OAuth2에는 클라이언트 애플리케이션이 사용자를 인증하고 토큰을 받은 후 토큰 유효성을 확인하는 데 사용할 수 있는 네 가지 타입의 인증 그랜트가 있다.

  • 패스워드 그랜트
  • 클라이언트 자격 증명 그랜트
  • 인가 코드 그랜트
  • 암시적 그랜트

패스워드 그랜트 타입

애플리케이션과 서비스가 명백하게 서로 신뢰한다면 이 그랜트 타입을 사용한다.
예를 들어 하나의 애플리케이션 O-stock에는 라이선싱 및 조직 서비스라는 같은 조직이 소유하고 있다면 서로 자연적 신뢰 관계가 형성되어 있다.

자연적 신뢰 관계가 있을 때 호출하는 애플리케이션에 OAuth2 액세스 토큰이 노출되는 것을 우려할 필요가 없다. 예를 들어 O-stock 웹 애플리케이션은 권한 부여된 OAuth2 패스워드를 사용하여 사용자의 자격 증명을 받아 OAuth2 서비스에 대해 직접 인증할 수 있다.

O-stock 애플리케이션과 하위 서비스인 라이선싱 서비스, 조직 서비스 사이에 동작하는 패스워드 그랜트 흐름을 그림으로 살펴보자

클라이언트 자격 증명 그랜트 타입

애플리케이션 OAuth2 보호 자원에 액세스해야 하지만 트랜잭션에 아무도 관여하지 않는다면 클라이언트 자격 증명 그랜트 타입을 사용한다.
예를 들어 O-stock 애플리케이션에 한 시간에 한번 실행되는 데이터 분석 작업이 있다고 가정해 보자. 이 작업의 일부로 O-stock 서비스를 호출한다. 해당 서비스의 데이터에 액세스 하기 전에 해당 애플리케이션이 자체적으로 인증 및 권한부여를 받아야한다.

다음 그림으로 살펴보자

인가 코드 그랜트 타입

다양한 벤더의 다양한 애플리케이션 사이에 사용자 자격 증명을 노출하지 않고도 데이터와 서비스를 공유할 수 있다. 또한 호출하는 애플리케이션이 바로 액세스 토큰을 얻지 못하게 함으로써 추가 확인(인가 코드를 받는다) 계층을 시행한다

예를 들어 세일즈포스닷컴도 사용하는 O-stock 사용자가 있다고 가정해 보자.(세일즈포스 애플리케이션은 O-stock의 조직 서비스의 데이터를 거친다)

O-stock 고객이 O-stock 자격 증명을 세일즈포스에 노출하지 않은 채 세일즈포스가 조직 서비스의 데이터에 액세스하기 위한 방법이다

암시적 그랜트 타입

대개 브라우저에서만 실행되는 순수 자바스크립트 애플리케이션에 암시적 그랜트를 이용한다. 모든 서비스와 직접 클라이언트(웹브라우저) 상호 작용을 할 수 있다.

내용 정리 및 요약

OAuth2의 암시적 그랜트 타입은 OAuth2 액세스 토큰이 직접 공개 클라이언트(웹브라우저)에 노출된다. 악의적인 자바스크립트로 공격과 오용에 더 취약하다. 그래서 암시적 그랜트 타입은 토큰 수명이 짧아야한다.

인가 코드 그랜트 타입의 경우 클라이언트 애플리케이션은 애플리케이션을 호스팅하는 애플리케이션 서버에서 인가 코드를 수신하고, 사용자는 인가 코드를 전달하여 OAuth2 액세스 권한을 받는다 (받은 토큰은 사용자 브라우저에 절대 직접 노출되지 않는다)

클라이언트 그랜트 타입은 서버 기반의 두 애플리케이션 사이에서 권한 부여를 한다.

패스워드 그랜트 타입은 동일한 조직에서 서비스에 요청하는 애플리케이션과 서비스를 모두 신뢰하고 소유한다.

profile
노옵스를향해

0개의 댓글