본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/시스템

OAuth 2.0 개념 정리

by 미노드 2023. 7. 19.

oauth 로고

최근들어 시스템간 통신에서 oauth로 인증하는 경우를 확인했다.
처음들어보는 것이라 포스팅으로 정리해보려 한다.

oauth가 무엇인가? 왜 나는 몰랐을까?

OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.

이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.

이는 주로 하나의 기업에서 크게 여러가지 서비스 및 시스템을 운영하는 기업이 아니면 적용하기 힘들다.
그렇다보니 oauth 인증을 사용하는 곳을 찾으려면 기본적으로 규모가 있는 기업에 속해있어야 하는데,
그렇지 않다보니 알 기회가 없었던 것 같다.

oauth 등장하게된 계기

OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조일 가능성이 매우 많다.

기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.

OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.

대표적인 예시

요즘 대부분의 온라인 쇼핑몰이나 커뮤니티 사이트, 게임을 보면 google로 로그인, 네이버로 로그인 같은 외부 계정으로 회원가입 및 로그인 하는 기능을 확인할 수 있다.

이게 가능한 기술이 oauth 방식이다.
다양한 모바일 게임 에서 google 계정으로 로그인 하는 것도, google API 정보를 통해 인증을 진행하며 게임의 서비스, 데이터를 이용할 수 있는 것이다.

용어

OAuth에 관련된 용어들을 간략히 정리해둔다.
부르는 주체에 따라 관점이 달라질 수 있기 때문에 용어를 표준으로 지정해두고 이해하는게 좋다.

Resource Owner(리소스 소유자) 게임 A를 이용하는데 필요한 구글, 페이스북 등의 플랫폼의 리소스(개인정보) 소유자
User(사용자) Client(소비자)를 사용하는 계정을 가지고 있는 개인
리소스 소유자 = 사용자 이다. 명칭만 다름
Authorization Server Resource Owner(사용자)를 인증하고, Client에게 액세스 토큰을 발급해주는 서버
Resource Server 구글, 페이스북, 네이버와 같이 리소스를 가지고 있는 서버를 말한다.
공식문서상 Authorization Server와 Resource Server는 별개의 역할 이지만, 같은 서버에서 동시에 역할을 수행할 수도 있습니다. (Authorization Server = Resource Server 인 경우도 가능하다는 이야기)
Client(소비자) Resource Server의 자원을 이용하고자 하는 서비스. 구글 인증, 페이스북 인증을 이용하는 게임, 홈쇼핑 사이트 같은 것들
Access Token 보호된 리소스에 액세스하는 데 사용되는 사용자 인증 정보 역할을 하는 긴 문자열
보호된 리소스 리소스 소유자가 소유한 데이터, 예를 들면 사용자의 연락처 목록, 계정 정보, 기타 민감한 정보가 있음

인증방식

OAuth인증은 ClientAuthorization Server 사이에서 일어나는데 이 인증 과정은 다음과 같다.

  1. ClientAuthorization Server에게 요청토큰을 요청한다.
  2. Authorization ServerClient에게 요청토큰을 발급해준다.
  3. ClientUserAuthorization Server로 이동시킨다. 여기서 사용자 인증이 수행된다.
  4. Resource ServerUserClient로 이동시킨다.
  5. Client가 접근토큰을 요청한다.
  6. Resource Server가 접근토큰을 발급한다.
  7. 발급된 접근토큰을 이용하여 Client에서 Resource Server에 있는 user정보에 접근한다.

https://cloud.google.com/apigee/docs/api-platform/security/oauth/oauth-home?hl=ko 

 

OAuth 2.0 홈  |  Apigee  |  Google Cloud

 

cloud.google.com