ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [개념 공부] Open API / REST API / OAuth / Curl
    공부 기록/IT 기술 2019. 10. 18. 23:35
    728x90

    Open API

    API 중에서 플랫폼의 기능 또는 콘텐츠를 외부에서 웹 프로토콜(HTTP)로 호출해 사용할 수 있게 개방(OPEN) API를 의미합니다. 지도, 검색, 기계번역, 단축 URL 등 대부분 API HTTP로 호출할 수 있는 오픈 API에 해당합니다. (출처:네이버)

    OpenID 2.0와 같은 일을 수행하지만 OpenID Connect sining encryption에 선택적인 메커니즘 제공.

     

    REST API

    REST (Representational State Transfer Application Programming Interface) API. 인터넷을 통해서 HTTP 프로토콜을 사용하여 애플리케이션 간에 데이터를 전송하거나 제어하는 인터페이스. 쿠키나 세션 등의 별도의 전송 계층 없이 통신할 수 있는 설계를 지향한다. (P.210, 개발자도 궁금한IT 인프라)

    • : 인터넷 상의 컴퓨터 시스템간 상호 운용성을 제공하는 방법 중 하나. http기반 표준 프로트콜로 서버 구성 가능 / http 기반으로 필요한 자원에 접근하는 방식(프로토콜)을 정해놓은 네크워크 아키텍쳐.  java, c+ 연동 가능 
      *html: 웹 문서를 만들기 위하여 사용하는 기본적인 웹 언어의 한 종류. 인터넷의 대부분 웹 페이지들은 html으로 작성.
      : 어떤 자원을 어떤 행위를 어떻게 할지 http기반으로 정의해놓은 아키텍쳐. 자원이란 저장된 데이터는 물론 이미지/동영상/문서(pdf 등)와 같은 파일, 서비스(이메일전송, 푸쉬메시지) 등을 모두 포함. REST 제약조건을 준수하는 웹서비스를 RESTful하다고 한다. REST 기반으로 서비스 API를 구현하는 것을 REST API라고 한다.

       

      주요 구성요소

      ㆍ 리소스: 접근할 대상, url을 통해 식별
      ㆍ 메소드: 어떤 자원을 생성(POST), 조회(GET), 수정(PUT) 삭제(DELETE) 할지
      ㆍ메시지: 메시지를 어떻게 처리해야할지 정보 포함. http바디(최근에는 json, xml으로 사용)와 헤더, 응답상태코드를 활용
      ㆍ End Point: 특정 url을 정의하는 것. 어떻게 처리할지. 리소스, 메소드, 등 매핑. -> 어떤 리소스를 어떻게 처리(METHOD)할지 구현된 항목을 ENDPOINT라함.

      컨텐츠 타입: application/json , test/plain 등

      200 정상, 201 생성요청 성공. 400. 요청이 부적절.
       

    참고 링크

     


    OAuth

    사용자의 아이디와 비번을 이용하지 않고 토큰을 이용해 인증하는 표준 인증 방식

    원본 출처:  http://oauth.net/core/diagram.png 

     

     

    출처: https://blog.hjf.pe.kr/483 (나무를 심는 프로그래머 님 블로그)
    출처: https://developers.kakao.com/docs/restapi/user-management (카카오)

     

    OAuth

    방문객이 회사에 방문해서 직원의 확인을 받고 방문증을 발급받아 회사에 들어갈 수 있는 것.

    사용자:

    방문증: authentication

    Open ID: 인증(Authentication)

    OAuth: 허가(Authorization)

    문자코드 UTF-8

    OAuth 의 인증 원리와 API 가이드를 샅샅이 이해해보고 싶어 ‘Tiwitter API 기초 지식’이란 책을 읽기 시작했다.

    ㆍ     BASIC 인증: 유저 이름과 패스워드를 포함한 문자열을 Base64 인코드한 것을 HTTP request header(Autorization header)에 첨부해서 이루어지는 인증.

    ㆍ     OAuth 인증: 유저 이름과 패스워드 대신 규약에 따라 정해진 순서로 입수한 토큰(Access token)을 사용해서 인증하는 방식. 유저가 자신의 패스워드를 애플리케이션에 입력할 필요가 없기 때문에 보안적인 측면에서 BASIC 인증보다 안전.

    (p.31)

    1.     애플리케이션을 twitter에 등록하고 consumer key와 consumer secret 취득

    2.     Request Token 취득 API(oauth/request_token)를 실행하여 Request Token 취득

    3.     Request Token의 token을 사용해서 유저에게 접속 허가를 요구하기 위한 url을 생성
    데스크톱 애플리케이션의 경우 그 URL을 지정해서 웹브라우저를 실행. 웹 애플리케이션의 경우는 그 URL로 리다이렉트함. (웹 브라우저로 표시되게 함)  -(동의페이지 / 허가/ 말하는건가)

    4.     유저에 의한 접속 허가로 Twitter에 접속. 허가 클릭하면 Twitter 접속, 그렇지않으면 여기서 종료.

    5.     데스크톱 애플리케이션의 경우, Twitter로부터 발행되는 PIN 취득.  / 웹 애플리션의 경우 callback URL로 리다이렉트 되기 떄문에 콜백될 떄 url로부터 oauth_verifier 파라미터 취득

    6.     Access Token 취득 API를 실행하여 Access Token 취득(token 2 or token2 secret) 

    7.     이후 consumer key, consumer secret, token, token secret을 사용해서 서명(oauth_signature)을 생성해서 서명된 api 실행.

    ㆍ     xAuth: OAuth와 가장 큰 차이점은 유저에 의한 브라우저 조작(브라우저 겨융의 접속을 허가)이 필요 없다는 점. Request Token을 얻지 않고 바로 Access Token을 얻음. 유저에 의한 브라우저 저작이 필요없는대신 유저로부터 유저 이름과 패스워드를 맡아둬서 Access Token을 얻음. OAuth의 변종으로 Access Token 취득이후에는 OAuth와 동일.

    리다이렉트 url로.. (tiwitter에서는 callback URL로 칭함) 

     

     

     

     그림에 있는 내용 설명 시 사용

    Autorization requirement

    1.     Consumer application key secret authentication server에 있는 로그인 페이지로 보냄. 인증이 되면 인증 서버가 access token으로 응답(repond to the user with an access token). Access token reponse에 있는 쿼리 파라미터로 싸이고(packaged), request로 다시 redirect.

    2.     사용자는 리소스 서버(API server)에 요청하고, access token API 요청의 헤더에 붙어 Bearer라는 단어와 뒤에 붙는다.  API 서버는 사용자의 요청에서 access toekn을 확인하고, 사용자를 인증(authenticate)

    3.     Access token  authentication 제공 뿐 아니라 사용자가 어떻게 api를 사용할지 권한도 정의한다 (define the permissions). 또한 access token은 특정 시간 이후에 만료되어서(expire after a period of time) 다시 로그인을 요청한다.

     

     


     

    ClientID와 ClientSecret에 대하여

    Client ID와 Client Secret은 내 애플리케이션을 구분해주는 중요한 정보입니다. 반드시 안전하게 보관하시기 바랍니다.

    또한 네아로 연동 과정에서 활용되는 정보입니다. 잘못된 Client ID / Client Secret 정보를 사용하게 되면 연동이 실패할 수 있습니다.

    한 번 발급이 된 Client ID는 변경이 불가능합니다. 하지만 Client Secret 정보는 개발자센터를 통해 재발급 받는것이 가능합니다.

    Client Secret의 유출이 의심되면 재발급을 통해 도용을 방지할 수 있습니다.

    Client ID와 Client Secret의 규격

    •   Client ID : 알파뱃 대소문자, 숫자가 조합된 40자리 이하의 문자열

    •   Client Secret : 알파뱃 대소문자, 숫자가 조합된 40자리 이하의 문자열

    API 권한에 대하여

    네아로를 이용하면 네이버에서 제공하는 로그인 오픈 API를 활용하여 서비스를 개발할 수 있습니다.

    오픈 API를 이용하기 위해서는 애플리케이션에서 API를 호출할수 있도록 권한을 설정하여야합니다.

    •   API 권한 설정: '내 애플리케이션'의 'API 권한관리' 탭에서 사용하고자 하는 API에 대하여 권한을 설정 할 수 있습니다.

    API 호출권한이 없을 경우

    API 권한 설정을 하지 않았거나 네아로 시 사용자가 권한동의를 하지 않을 경우 API호출이 실패할 수 있습니다.

    이에따라 원활한 API이용을 위해서는 권한 설정을 반드시 체크하여야 합니다.

     

    참고 링크

     


    CRUID
    : CRUD(크러드)는 Create, Read, Update, Delete의 약어

     


     

    REST API 가이드에 많이 보이는 curl.. 무언가 했더니

    curl 은 command line 용 data transfer tool 이다. download/upload 모두 가능하며 HTTP/HTTPS/FTP/LDAP/SCP/TELNET/SMTP/POP3 등 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로 여러 플랫폼과 OS에서 유용하게 사용할 수 있다. 또 libcurl 이라는 C 기반의 library 가 제공되므로 C/C++ 프로그램 개발시 위의 protocol 과 연계가 필요하다면 libcurl 을 사용하여 손쉽게 연계할 수 있다. libcurl은 PHP, ruby, PERL 및 여러 언어에 바인딩되어 있으므로 사용하는 언어나 개발환경에 맞게 libcurl 을 사용할 수 있다.

    출처: 정광석 님의 블로그: curl 설치 및 사용법 - HTTP GET/POST, REST API 연계등

    댓글

Designed by Tistory.