RPA를 하다보니 확장성 관련 외부 API를 많이 끌어와 쓰게 된다.

가령 Google Cloud Platform, MS AZURE 같은 AI 관련 기능, 웹툴 관련 기능도 있고

slack 같은 데스크톱앱 같은 것도 간단하게 앱을 만들고 OAuth 관련 기능만 활용하면 된다. [챗봇이나 noti 관련]

 

이런 것들을 활용하면서 OAuth가 무엇인가 궁금해져서 정리해 본다.

1. 나오게 된 이유

OAuth는 Open Authentication의 약어로 인증방식의 통합된 표준이라 볼 수 있다.

기존엔 아이디, 비밀번호 같은 걸 활용했으나 해당 정보는 상대적으로 보안이 취약한 구조였기 때문에

각 앱들이 API 서비스 등을 제공할 때 각각 인증하는 방식을 사용했었다.

그런 인증방식을 통합함으로써 여러 앱간 통합 인증도 가능하게 되었다.

(이래서 소셜 계정으로 로그인이 된다.)

+ 기존 방식에서는 서비스 사용 권한을 부여하기 위해서 그룹을 만들고 그 그룹내 각 아이디에 권한을 부여하거나

권한 그룹을 만들어 거기에 그 아이디를 소속시키는 형태였다.

그 권한이 부여된 아이디/패스워드를 뿌린다? 그럼 그냥 그 계정이 털리는 거다.

계정에 대한 컨트롤과 계정이 사용할 수 있는 서비스에 대한 컨트롤이 구분하기 어렵고 폐쇄적인 편이었다.

근데 OAuth는 그냥 열려있는 상태로 토큰만 갖고 있으면 해당 토큰에 부여된 서비스 요청을 할 수 있게 해놨다.

이런 자유도는 토큰을 통해 쉽고 빠르게 앱 생태계, 서비스를 확장시키도록 해주지 않았나 싶다.

 

"나 이런 서비스 만들고 싶은데 그럼 다른 곳에서 서비스하는 거 빌려와서 이리저리 활용해 봐야지"

=> IaaS, PaaS를 손쉽게 구매하고 내 앱 만들 확장성을 바로 구성

 

 

2. 인증 방식

기존 ID/PW를 쓰던 방식이 쿠키, 세션을 이용하는 것과는 달리 OAuth는 토큰을 이용한다.

콘솔계정의 사용자(개발자)는 앱[각주:1]이라는 개념을 만든다.

그러고 앱에 사용할 수 있는 관련 권한을 설정하고 토큰을 발행한다. [각주:2]

발행 시 토큰이 가질 수 있는 권한을 부여한다.

이후 OAuth 토큰을 요청하면 부여된 권한에 맞는 요청에 대해 API 기능[각주:3]을 하게 된다.

 

요컨대,

1. 앱 생성

2. 권한이 부여된 토큰 생성

3. 해당 토큰으로 요청하여 Access하고 API 기능 요청

하는 형태이다.

 

그래서 OAuth인증을 하라고 하면,

'일단 앱만들고 앱에 대한 토큰은 어디서 발행하는지 권한은 어떻게 되는지 볼까?' 로 접근하면 된다.

  1. 여기서 앱이라는 개념이 넓어지는데 단순히 우리가 사용하는 앱이 아니라 서비스를 사용하는 Back단의 주체까지 앱이라고 부른다. 어떤 면에선 권한을 부여하기 위한 개념적인 존재에 가깝다. [본문으로]
  2. 토큰 발행말고 Access Account를 따로 발급한다든가, API Key를 이용한다든가 할 수도 있다. 여기선 OAuth를 설명 [본문으로]
  3. 여기서 기능이라고 표현한 것은 단순히 정보 조회뿐 아니라 구글시트 쓰기, 드라이브 파일 삭제 등 API로 제공되는 것들을 모두 할 수 있기 때문 [본문으로]

+ Recent posts