사용자 도구

사이트 도구


research:oauth20

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
research:oauth20 [2013/11/17 08:08] – [(A) Authorization Request (Client --> Resource Owner)] changwooresearch:oauth20 [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1
줄 4: 줄 4:
 이렇게 일기를 계속 쓰다보니, 몇가지 아쉬운 점이 생겼습니다. GMail을 보다 일기 작성 및 회고에 맞는 형태로 확장시키고 싶은 생각이 들었던 것입니다. 다행히 처음 생각할 때부터 구글의 API를 이용하면 쉽게 확장이 가능하리라 생각했던 것이긴 했죠. 시간이 날 때마다 차근차근 위키에 자료를 축적하면서 차근차근 일기의 기능을 웹브라우저만이 아닌 다른 어떤 형태로 확장시키리라 생각하고 있습니다. 이렇게 일기를 계속 쓰다보니, 몇가지 아쉬운 점이 생겼습니다. GMail을 보다 일기 작성 및 회고에 맞는 형태로 확장시키고 싶은 생각이 들었던 것입니다. 다행히 처음 생각할 때부터 구글의 API를 이용하면 쉽게 확장이 가능하리라 생각했던 것이긴 했죠. 시간이 날 때마다 차근차근 위키에 자료를 축적하면서 차근차근 일기의 기능을 웹브라우저만이 아닌 다른 어떤 형태로 확장시키리라 생각하고 있습니다.
  
-GMail은 현재 [[https://developers.google.com/accounts/docs/OAuth2|OAuth 2.0을 인증 수단으로 채택]]하고 있습니다. 그러므로 확장 기능을 구현하기 위해선느 OAuth2.0에 대해 잘 알지 않으면 안되겠지요.+GMail은 현재 [[https://developers.google.com/accounts/docs/OAuth2|OAuth 2.0을 인증 수단으로 채택]]하고 있습니다. 그러므로 확장 기능을 구현하기 위해선 OAuth2.0에 대해 잘 알지 않으면 안되겠지요.
  
 ===== OAuth 2.0 용어 정리 ===== ===== OAuth 2.0 용어 정리 =====
줄 29: 줄 29:
  
 사용자는 단 한 번만 이 과정을 거치면 됩니다. 이렇게 허락한 사항은 서비스 제공자(Resource Server)에 기록되며, 사용자는 언제든지 이 권한을 제거(revoke)할 수 있습니다. 아래 그림은 [[http://www.dropbox.com|Dropbox]]가 허용한 client들의 목록을 보여주는 예시입니다(목록이 별로 없네요). 우측의 'X' 표시를 누르면 해당 앱은 사용자의 드롭박스에 접근할 권한이 박탈됩니다. 사용자는 단 한 번만 이 과정을 거치면 됩니다. 이렇게 허락한 사항은 서비스 제공자(Resource Server)에 기록되며, 사용자는 언제든지 이 권한을 제거(revoke)할 수 있습니다. 아래 그림은 [[http://www.dropbox.com|Dropbox]]가 허용한 client들의 목록을 보여주는 예시입니다(목록이 별로 없네요). 우측의 'X' 표시를 누르면 해당 앱은 사용자의 드롭박스에 접근할 권한이 박탈됩니다.
-{{ :research:oauth20:drobox_apps.png?nolink |}} +{{ :research:oauth20:drobox_apps.png?nolink*&640 |}} 
 ==== (B) Authorization Grant (Resource Owner --> Client Owner) ==== ==== (B) Authorization Grant (Resource Owner --> Client Owner) ====
 +사용자가 '허락' 버튼을 눌렀을 때 일어나는 과정입니다. 이제 클라이언트 앱은 Resource Server에 접근을 허락받았습니다.
 +
 ==== (C) Authorization Grant & Client Credentials (Client --> Authentication Server) ==== ==== (C) Authorization Grant & Client Credentials (Client --> Authentication Server) ====
 +Client는 authorization server에 접속하여 인증을 요청합니다. 이 때 resource owner는 client에게 아이디와 패스워드는 일절 알려주지 않았습니다. 그러므로 client와 authorization server의 통신 과정에서 resource owner의 아이디, 패스워드는 전혀 언급되지 않을 것입니다.
 +
 ==== (D) Access Token (Authentication Server --> Client ) ==== ==== (D) Access Token (Authentication Server --> Client ) ====
 +사용자의 아이디와 비밀번호 대신, authentication server는 client에게 'access token'이란 것을 발급합니다. 이 token을 이용해 client는 제한적으로 resource server에 접근할 권한을 얻습니다.
 ==== (E) Access Token (Client --> Resource Server) ==== ==== (E) Access Token (Client --> Resource Server) ====
 +Client는 드디어 access token을 이용해 resource server에 API call을 수행합니다. Access token은 제한방문출입증과 비슷한 것이어서 지정된 API만 허락되며 권한을 벗어난 동작은 허용되지 않습니다. 모든 동작이 가능한 아이디/패스워드 방식에 비해 훨씬 안전하지요.
 +
 ==== (F) Protected Resource (Resource Server --> Client) ==== ==== (F) Protected Resource (Resource Server --> Client) ====
 +access token을 통해 resource server로부터 데이터를 받아 옵니다. 이 데이터는 client에서 적절히 목적에 맞게 사용됩니다.
 +
 +
 +
 +
 +
 +
 +
 +
 +===== Google OAuth 2.0 for Installed Applications 과 연결 =====
 +==== Authentication URL 얻기 ====
 +Authentication url 요청을 얻는 url은 ''https://accounts.google.com/o/oauth2/auth''이다. 여기에 파라미터들을 적어 보내야 하는데, [[https://developers.google.com/accounts/docs/OAuth2InstalledApp#formingtheurl | Forming the URL]] 부분을 참고하면 된다. 이 주소로 직접 사용자가 로그인을 해야 한다. GUI 방식이면 따로 웹브라우저를 띄우든지, 완전 CLI 라면 해당 URL로 접속하라는 통지를 주어야 한다. 
 +
 +==== Authentication Code ====
 +보낸 정보를 바탕으로 인증 서버에서 authentication code를 발급해준다. Google의 ''urn:ietf:wg:oauth:2.0:oob&''의 경우라면 html tag의 title에도 이 코드가 담겨 있으니 html 코드를 분석해도 결과를 얻을 수 있다. 그러면 이 코드를 이용하여 access token을 요청할 수 있다. 토큰을 요청하는 곳의 주소는 ''https://accounts.google.com/o/oauth2/token''. 그리고 여기에 보내는 파라미터는 [[https://developers.google.com/accounts/docs/OAuth2InstalledApp#handlingtheresponse | Handling the response]]를 참고하라.
 +
 +==== Access Token ====
 +IMAP 서버에 접근하기 위해서는 access token을 IMAP 서버와 연동해야 한다.
 +
 +==== Refreshing ====
 +토큰이 만료된 경우 재발급을 받아야 한다. ''https://accounts.google.com/o/oauth2/token''으로 요청/응답을 받으면 된다. 이 때 보내야 하는 데이터는 [[https://developers.google.com/accounts/docs/OAuth2InstalledApp#refresh | Using a refresh token]]을 참고하라.
  
 ===== 참고 페이지 ===== ===== 참고 페이지 =====
줄 43: 줄 71:
   * [[https://developers.google.com/api-client-library/python/guide/aaa_oauth|Google APIs Client Library for Python]]   * [[https://developers.google.com/api-client-library/python/guide/aaa_oauth|Google APIs Client Library for Python]]
   * [[http://earlybird.kr/1584|OAuth 2.0 – Open API 인증을 위한 만능 도구상자]]: 이 페이지는 한국어로 OAuth2.0을 잘 정리했습니다. 만약을 대비해 전문을 PDF로 만들어 첨부하였습니다. {{:research:oauth20:oauth2.0.pdf|}}   * [[http://earlybird.kr/1584|OAuth 2.0 – Open API 인증을 위한 만능 도구상자]]: 이 페이지는 한국어로 OAuth2.0을 잘 정리했습니다. 만약을 대비해 전문을 PDF로 만들어 첨부하였습니다. {{:research:oauth20:oauth2.0.pdf|}}
 +  * http://code.google.com/p/google-mail-oauth2-tools/wiki/OAuth2DotPyRunThrough
 +  * [[https://developers.google.com/accounts/docs/OAuth2InstalledApp | Google OAuth2 Installed App]]
  
  
research/oauth20.1384675712.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki