앞선 영상에서 Google Cloud APIs를 이해하기 위하여 간단하게 API와 REST API에 대하여 설명 드렸습니다.
이번 포스팅에서는 주로 사용하는 API 스타일(REST API, SOAP API) 설명 및 비교와 OAuth2.0에 대하여 자세하게 알아보겠습니다.
REST API(Representational State Transfer API)
- 정의
– REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미하며, REST의 특징을 기반으로 서비스 API를 구현한 것이 REST API입니다. - 특징
– 어떤 자원에 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며,
요청을 위한 자원은 특정한 형태로 표현됩니다. - 장점
– REST API 메시지를 읽는 것 만으로도 메시지가 의도하는 바를 명확하게 파악할 수 있습니다.
– 특정 메소드의 세부적인 표현 문구를 JSON, XML 등 다양한 언어를 이용하여 작성할 수 있다는 장점이 있습니다. - 단점
– HTTP 메소드만을 사용하여 URI를 표현하여 메소드 형태가 제한적입니다.
– 표준이 존재하지 않아 관리의 어려움이 존재하며, 좋은 API 디자인 가이드가 존재하지 않습니다.
SOAP API(Simple Object Access Protocol API)
- 정의
– 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜입니다. - 특징
– XML이 플랫폼에 종속적이지 않기 때문에 이기종간의 통신이 가능하다는 장점이 있어서 이러한 A장치와 B장치를 연결하는 네트워크를 구성할 때 주로 사용 - 장점
– Proxy와 방화벽에 구애 받지 않고 쉽게 통신 가능
– 플랫폼과 프로그래밍 언어에 독립적
– 웹서비스를 제공하기 위한 표준(WSDL, UDDI, WS-*)이 잘 정립되어 있음
– 에러 처리에 대한 내용이 기본으로 내장
– 분산 환경에 적합 - 단점
– 복잡한 구조로 인한 오버헤드가 있으며, REST에 비해 무겁고 느림
– 개발 난이도가 높아 개발 환경의 지원이 필요
REST API vs SOAP API 비교
REST API와 SOAP API의 차이점 비교해보겠습니다.
OAuth2.0이란?
- 정의
– OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는
공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이 있습니다. - 사용 이유
– 연동되는 외부 웹 어플리케이션에서 Facebook 및 카카오 등이 제공하는 기능을 간편하게 사용할 수 있다는 장점이 있습니다.
예를 들어, 외부 웹 어플리케이션에 Google로 로그인하면 API를 통해 연동된 계정의 Google Calendar 정보를 가져와 사용자에게 보여줄 수 있습니다.
OAuth2.0 구성 요소
- 정의
– OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는
공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이 있습니다. - 사용 이유
– 연동되는 외부 웹 어플리케이션에서 Facebook 및 카카오 등이 제공하는 기능을 간편하게 사용할 수 있다는 장점이 있습니다.
예를 들어, 외부 웹 어플리케이션에 Google로 로그인하면 API를 통해 연동된 계정의 Google Calendar 정보를 가져와 사용자에게 보여줄 수 있습니다.
OAuth2.0 인증 방식
OAuth2.0의 Protocol 흐름과 인증에 대한 4가지 유형이 존재합니다.
- Authorization Code
– 코드를 이용한 인증 방식이며 다른 방식에 비하여 보안성이 높아 주로 사용되는 방식입니다. - Implicit
– Authorization Code 방식에서 코드를 통해 인증하는 부분을 뺀 방식입니다. - Resource Owner Password Credentials
– Resource Owner에서 ID, PWD를 전달받아 Resource Server에 인증하는 방식입니다.
(신뢰할 수 있는 Client에서 사용) - Client Credentials
– Resource Owner가 사용자가 아닌 Client 자체일 때 사용되는 방식입니다.
Google Cloud APIs가 신뢰적인 인증 방식을 통하여 안전하게 사용되는지에 대하여 알아보았습니다.