OAUTH 1.0 스펙 공개

기존의 매쉬업 서비스를 살펴보면, 가령 B사이트의 매쉬업 서비스가 A사이트에 저장된 사용자 데이터를 요구할 경우, 사용자는 A사이트에서 제공하는 오픈API를 사용하기 위해 APP Key를 하나 발급받습니다. 이 APP Key를 B사이트의 매쉬업 서비스에 세팅하여 서비스를 이용하게 되는 것이죠. 또는 A사이트의 사용자 id와 password를 직접 저장하기도 합니다. 하지만 이런 방식은 A 사이트에 대한 모든 권한을 B 사이트에게 넘겨주는 것입니다. B 사이트가 해킹당하거나 혹은 악의적인 의도를 가진 내부자가 있다면, A 사이트에 저장된 사용자의 정보를 무단으로 이용하고, 사용자의 계정으로 스팸 메일을 뿌리거나 악플을 달수도 있습니다. 이렇게 매쉬업 서비스를 위해 사용자의 모든 권한을 넘겨주는 문제를 API Key 문제라고 부릅니다.

OAuth는 한 어플리케이션이 다른 어플리케이션에서 관리하는 사용자 정보를 접근할 수 있는 표준화된 방법을 제공하는 스펙입니다. 이 스펙은 매쉬업 서비스의 API Key 문제를 해결하기 위해서 제시되었습니다. OAuth는 사용자가 허락하는 수준의 권한만을 타 서비스에 제공하는 방식을 제공합니다. 아래 문장이 OAuth의 장점을 명쾌하게 설명하고 있죠.

OAuth는 당신이 사용하는 모든 웹서비스에 대한 발렛 키다. 발렛 키는 당신의 차를 주차할 수 있을 정도의 권한만 제공하지, 트렁크를 열거나 2마일 이상 운전하거나 RPM의 빨간 선까지 속도를 내는 권한은 없다. 마찬가지로, OAuth 키는 웹 에이전트가 당신의 웹 메일을 체크하는 기능만 제공하며, 당신인 것처럼 해서 주소록에 있는 모든 사람에게 메일을 보내는 일은 하지 못하게 한다.
- http://journals.aol.com/panzerjohn/abstractioneer/entries/2007/09/21/oauth-your-valet-key-for-the-web/1550

OAuth는 10월 3일자로 최종 드래프트 스펙  이 공개되었습니다. 기술적인 내용을 원하시면 스펙을 보시는 게 낫지만, 쉬운 설명을 원하신다면 primer  를 보시길 바랍니다.

아래 그림은 OAuth 스펙에 명시된 인증 절차입니다.Consumer는 매쉬업 서비스를 제공하는 사이트이고 Service Provider는 사용자 정보를 보유한 사이트입니다. Consumer가 Service Provider로부터 Request Token을 발급받은 후, 사용자의 동의를 거쳐서 Access Token으로 교환하고, 이 Access Token으로 사용자 데이터에 접근하는 순서로 이루어집니다. 각 스텝별로 간단히 설명드리겠습니다.

  1. A; Consumer가 Request Token 요청
  2. B; Service Provider가 Request Token 발급
  3. C; Consumer는 사용자를 Service Provider로 이동, 사용자를 인증하고 토큰 발급을 확인함
  4. D; Service Provider는 사용자를 Consumer로 이동
  5. E; Consumer는 Access Token 요청 
  6. F; Service Provider는 Consumer의 신원과 Request Token 확인, Access Token 발급
  7. G; Consumer는 Access Token으로 사용자 정보에 접근

출처: http://oauth.net/documentation/spec

OAuth의 동작 방식은 생각보다 간단합니다. OpenID의 동작 방식과도 유사하죠. Google AuthSub, AOL OpenAuth, Yahoo BBAuth, Upcoming API, Flickr API, Amazon Web Services API 와 같은 유사 API가 이미 있습니다. 하지만 이들 방식은 모두 독자적이지만, OAuth는 공개 스펙입니다. 개별적인 접근 요청을 사용자가 직접 제어할 수 있으며, 해당 목적에 필요한 권한만을 선택적으로 제공할 수도 있습니다. 매번 사용자의 허락을 받지 않아도 되며 UI(User Inferface)나 인터렉션 패턴이 없다는 점을 강조합니다.

하지만 실제로 스펙을 살펴보면 사용자가 관여하는 부분이 명시적으로 존재하기 때문에, UI와 인터렉션이 없다는 말은 사실이 아닙니다. 스펙에서 논외로 하고 있긴 하지만 말이죠.
또한 OAuth 동작 과정에서 Consumer는 Service Provider와 사전에 신뢰 관계를 맺고 있어야 합니다. oauth_consumer_key와 서명 키를 공유하고 있어야 하기 때문이죠. 신뢰 관계를 맺어야 한다는 것은 생각보다 복잡한 문제죠. 다른 블로거들이 왜 이 점에 대해서는 언급하고 있지 않는지 모르겠습니다.
그리고 OAuth의 장점은 필요한 권한만을 제공한다는 것인데, 어떤 식으로 적절한 수준의 권한을 할당할지에 대한 내용은 논외로 하고 있습니다. 프로토콜 레벨에서 권한을 명세할 수도 있는데, 구현 과정에서의 이슈로 넘겨버렸네요.

OAuth는 여러 분야에서 활용될 전망입니다. 최근 이슈가 되고 있는 portable social network라든지, OpenID와 결합하는 방식이 논의되고 있는 상황입니다.

관심있으신 분은 OAuth 커뮤니티(구글) 를 살펴보시기 바랍니다. OAuth는 이미 PHP, Rails, Python, .NET, C, Perl 로 오픈소스 라이브러리가 개발되었으며, Bloglines가 OpenID와 OAuth를 지원 하는 것을 시작으로 Netflix, Threadless, Bloglines, Twitter, Jaiku, Pownce, Ma.gnolia 등에 적용될 예정입니다. OAuth 스펙을 작성한 사람들이  Google, Amazon, Yahoo/Flickr, Six Apart 에 일하고 있기 때문에 이들 사이트에도 적용되길 기대합니다.

참고자료
[1] http://www.whurley.com/blog/2007/10/oauth-core-10-s.html
[2] http://notizblog.org/2007/10/05/oauth-core-10-final-draft/
[3] http://kveton.com/blog/2007/10/04/oauth-goes-final-here-comes-the-open-web/
[4] http://feeds.feedburner.com/~r/PlanetIdentity/~3/165550030/oauth-10-releas.html
[5] http://feeds.feedburner.com/~r/PlanetIdentity/~3/164745962/
[6] http://daveman692.livejournal.com/315122.html
[7] http://codetechnology.wordpress.com/2007/09/27/oauth-protocol/
[8] http://feeds.feedburner.com/~r/oreilly/radar/atom/~3/161266917/oauth_open_auth.html
[9] http://feeds.feedburner.com/~r/PlanetIdentity/~3/160264746/oauth-10-public.html
[10] http://identity20.com/?p=131
[11] http://simonwillison.net/2007/Sep/21/oauth/
[12] http://feeds.feedburner.com/~r/PlanetIdentity/~3/146636497/oauth_approaches.html

by S_H_Kim | 2007/10/05 18:06 | ID관리 | 트랙백 | 핑백(4) | 덧글(6)

트랙백 주소 : http://ayo79.egloos.com/tb/3422029
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at likejazz.COM &mi.. at 2008/04/23 17:12

... OAuth 이해를 돕고 있다. 5월까지는 기존 인증방식과 OAuth 인증 방식을 택할 수 있지만 6월 부터는 OAuth 인증 방식만 지원한다고 하니 참고하기 바란다. 참고: OAuth 1.0 스펙 공개 No comments Trackback URI: http://www.likejazz.com/archives/294/trackback/ 이름 블로그/홈페이지 주소 코멘 ... more

Linked at Korean Identity .. at 2008/04/29 23:01

... title; 스프링노트 OAuth 지원link; http://www.likejazz.com/archives/294지난 2007년 10월에 OAuth에 관한 포스팅을 올렸습니다. 해외에서도 적용사례가 드물었는데, 국내에서 오픈마루가 OAuth를 지원하기로 했다고 합니다. 국내에서 처음으로 적용되는 사례죠? likejazz ... more

Linked at 게으른 자는 꿈만 꾸다 죽는다.. at 2008/08/05 17:54

... ode.com/svn/spec/discovery/1.0/drafts/1/spec.html#OAuth%20Core%201.0OAUTH 1.0 스펙 공개 http://ayo79.egloos.com/3422029 시나리오개인의 비공개 사진을 올릴 수 있는 웹사이트 photo.com이 있다.태호는 매일 photo.com에 로그인하여 찍은 사진을 올리고 관 ... more

Linked at [烈] 렬이의 별볼일없는 블로.. at 2009/12/18 10:24

... REST : http://jsjang.tistory.com/62OAuth : http://ayo79.egloos.com/3422029 ... more

Commented by 이장 at 2007/10/09 11:44
궁금했는데, 친절한 설명글 잘 읽고 갑니다.
Commented by S_H_Kim at 2007/10/09 11:57
/이장님, 방문해주셔서 감사합니다^^
Commented by kay at 2007/10/09 12:40
멋진데요, 오픈마루 API 센타에서는 OpenID 프로토콜을 활용해서 api 키를 전달하는데, 권한을 최대공약수로 제한한 점이 재밌네요. 적극 검토해 봐야 겠습니다.
Commented by S_H_Kim at 2007/10/09 13:45
/kay님, 그런가요? 괜찮은 방안이네요. 혹시 관련 정보를 가지고 계시면 알려주세요. 찾기가 어렵네요^^;
Commented by kay at 2007/10/09 20:59
네. 좀 그렇죠. ^^a. 아직 API 문서들이 체계적으로 구성되지는 못했습니다.
http://dev.springnote.com/pages/392573.xhtml
http://dev.springnote.com/pages/334513.xhtml 을 보십시오.
Commented by S_H_Kim at 2007/10/10 11:37
/kay님, 감사합니다~ springnote의 접근 방법에 대해서도 포스팅해야겠네요.

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶