양쪽 이전 판이전 판다음 판 | 이전 판 |
research:oauth20 [2013/11/17 08:16] – [(D) Access Token (Authentication Server --> Client )] changwoo | research:oauth20 [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1 |
---|
이렇게 일기를 계속 쓰다보니, 몇가지 아쉬운 점이 생겼습니다. 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 용어 정리 ===== |
사용자의 아이디와 비밀번호 대신, authentication server는 client에게 'access token'이란 것을 발급합니다. 이 token을 이용해 client는 제한적으로 resource server에 접근할 권한을 얻습니다. | 사용자의 아이디와 비밀번호 대신, 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]]을 참고하라. |
| |
===== 참고 페이지 ===== | ===== 참고 페이지 ===== |
* [[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]] |
| |
| |