[hello world 오픈 세미나]oauth

47
발표자 : 오창훈 이메일 : [email protected] me2DAY : me2day.net/lovedev 실전 OAuth A to Z

Upload: naver-d2

Post on 24-May-2015

2.916 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: [Hello world 오픈 세미나]oauth

발표자����������� ������������������  :����������� ������������������  오창훈이메일����������� ������������������  :����������� ������������������  [email protected]����������� ������������������  me2DAY����������� ������������������  :����������� ������������������  me2day.net/lovedev

실전����������� ������������������  OAuth����������� ������������������  A����������� ������������������  to����������� ������������������  Z

Page 2: [Hello world 오픈 세미나]oauth

발표자����������� ������������������  :����������� ������������������  오창훈이메일����������� ������������������  :����������� ������������������  [email protected]����������� ������������������  me2DAY����������� ������������������  :����������� ������������������  me2day.net/lovedev

실전����������� ������������������  OAuth����������� ������������������  A����������� ������������������  to����������� ������������������  Z

Page 3: [Hello world 오픈 세미나]oauth

Q&A

Page 4: [Hello world 오픈 세미나]oauth

OAuth����������� ������������������  무엇에����������� ������������������  쓰는����������� ������������������  물건인고?

Page 5: [Hello world 오픈 세미나]oauth

OAuth는����������� ������������������  인증을����������� ������������������  위한����������� ������������������  오픈����������� ������������������  스탠더드����������� ������������������  프로토콜로,����������� ������������������  사용자가����������� ������������������  Facebook이나����������� ������������������  트위터����������� ������������������  같은����������� ������������������  인터넷����������� ������������������  서비스의����������� ������������������  기능을����������� ������������������  다른����������� ������������������  애플리케이션(데스크톱,����������� ������������������  웹,����������� ������������������  모바일����������� ������������������  등)에서도����������� ������������������  사용할����������� ������������������  수����������� ������������������  있게����������� ������������������  한����������� ������������������  것이다.

OAuth의����������� ������������������  탄생����������� ������������������  이전에도����������� ������������������  다른����������� ������������������  애플리케이션에����������� ������������������  사용자의����������� ������������������  아이디와����������� ������������������  암호가����������� ������������������  노출되지����������� ������������������  않도록����������� ������������������  하면서����������� ������������������  API����������� ������������������  접근����������� ������������������  위임(API����������� ������������������  Access����������� ������������������  Delegation)이����������� ������������������  가능한����������� ������������������  여러����������� ������������������  인증����������� ������������������  방법이����������� ������������������  있었다.����������� ������������������  Google과����������� ������������������  Yahoo!,����������� ������������������  AOL,����������� ������������������  Amazon����������� ������������������  등에서는����������� ������������������  각각의����������� ������������������  인증����������� ������������������  방식을����������� ������������������  제작하여����������� ������������������  사용했다.

OAuth����������� ������������������  1.0이����������� ������������������  나온����������� ������������������  때는����������� ������������������  2007년이며,����������� ������������������  이후����������� ������������������  보안����������� ������������������  문제를����������� ������������������  해결한����������� ������������������  수정����������� ������������������  버전인����������� ������������������  OAuth����������� ������������������  1.0����������� ������������������  revision����������� ������������������  A����������� ������������������  가����������� ������������������  2008년에����������� ������������������  나왔다.

OAuth의����������� ������������������  시작은����������� ������������������  2006년에����������� ������������������  트위터의����������� ������������������  개발자와����������� ������������������  소셜����������� ������������������  북마크����������� ������������������  서비스인����������� ������������������  Gnolia의����������� ������������������  개발자가����������� ������������������  만나����������� ������������������  인증����������� ������������������  방식을����������� ������������������  논의한����������� ������������������  때부터였다.����������� ������������������  두����������� ������������������  회사의����������� ������������������  개발자들은����������� ������������������  그때까지����������� ������������������  API����������� ������������������  접근����������� ������������������  위임에����������� ������������������  대한����������� ������������������  표준안이����������� ������������������  없다는����������� ������������������  것을����������� ������������������  알았다.����������� ������������������  그래서����������� ������������������  2007년����������� ������������������  4월����������� ������������������  인터넷에����������� ������������������  OAuth����������� ������������������  논의체를����������� ������������������  만든����������� ������������������  뒤����������� ������������������  OAuth드래프트����������� ������������������  제안서를����������� ������������������  만들어����������� ������������������  공유했다.����������� ������������������  그����������� ������������������  뒤에����������� ������������������  이����������� ������������������  활동을����������� ������������������  지지하는����������� ������������������  사람이����������� ������������������  생기게����������� ������������������  되었고,����������� ������������������  2008년����������� ������������������  IETF����������� ������������������  모임(73회,����������� ������������������  미네소타에서����������� ������������������  개최)에서����������� ������������������  OAuth가����������� ������������������  IETF����������� ������������������  표준안으로����������� ������������������  관리되야����������� ������������������  하는����������� ������������������  가에����������� ������������������  대한����������� ������������������  논의가����������� ������������������  있었다.����������� ������������������  그리고����������� ������������������  2010년에����������� ������������������  OAuth����������� ������������������  1.0����������� ������������������  프로토콜����������� ������������������  표준안이����������� ������������������  RFC5849로����������� ������������������  발표되었다.

2007년에����������� ������������������  나온����������� ������������������  OAuth����������� ������������������  1.0은����������� ������������������  비공식����������� ������������������  논의체에����������� ������������������  의해����������� ������������������  최초로����������� ������������������  만들어진����������� ������������������  것이고,����������� ������������������  2010년����������� ������������������  IETF����������� ������������������  OAuth����������� ������������������  워킹그룹에����������� ������������������  의해����������� ������������������  이����������� ������������������  프로토콜이����������� ������������������  IETF����������� ������������������  표준����������� ������������������  프로토콜로����������� ������������������  발표된����������� ������������������  것이다.

현재����������� ������������������  나와����������� ������������������  있는����������� ������������������  OAuth����������� ������������������  2.0은����������� ������������������  드래프트����������� ������������������  단계에����������� ������������������  있는����������� ������������������  것으로,����������� ������������������  IETF����������� ������������������  OAuth����������� ������������������  워킹그룹이����������� ������������������  주축이����������� ������������������  되어����������� ������������������  만든����������� ������������������  것이다.����������� ������������������  OAuth����������� ������������������  2.0은����������� ������������������  OAuth����������� ������������������  1.0과����������� ������������������  호환되지����������� ������������������  않지만,����������� ������������������  인증����������� ������������������  절차가����������� ������������������  간략하다는����������� ������������������  장점이����������� ������������������  있다.

......����������� ������������������  중략

OAuth란?

Page 6: [Hello world 오픈 세미나]oauth

OAuth는����������� ������������������  인증을����������� ������������������  위한����������� ������������������  오픈����������� ������������������  스탠더드����������� ������������������  프로토콜로,����������� ������������������  사용자가����������� ������������������  Facebook이나����������� ������������������  트위터����������� ������������������  같은����������� ������������������  인터넷����������� ������������������  서비스의����������� ������������������  기능을����������� ������������������  다른����������� ������������������  애플리케이션(데스크톱,����������� ������������������  웹,����������� ������������������  모바일����������� ������������������  등)에서도����������� ������������������  사용할����������� ������������������  수����������� ������������������  있게����������� ������������������  한����������� ������������������  것이다.

OAuth의����������� ������������������  탄생����������� ������������������  이전에도����������� ������������������  다른����������� ������������������  애플리케이션에����������� ������������������  사용자의����������� ������������������  아이디와����������� ������������������  암호가����������� ������������������  노출되지����������� ������������������  않도록����������� ������������������  하면서����������� ������������������  API����������� ������������������  접근����������� ������������������  위임(API����������� ������������������  Access����������� ������������������  Delegation)이����������� ������������������  가능한����������� ������������������  여러����������� ������������������  인증����������� ������������������  방법이����������� ������������������  있었다.����������� ������������������  Google과����������� ������������������  Yahoo!,����������� ������������������  AOL,����������� ������������������  Amazon����������� ������������������  등에서는����������� ������������������  각각의����������� ������������������  인증����������� ������������������  방식을����������� ������������������  제작하여����������� ������������������  사용했다.

OAuth����������� ������������������  1.0이����������� ������������������  나온����������� ������������������  때는����������� ������������������  2007년이며,����������� ������������������  이후����������� ������������������  보안����������� ������������������  문제를����������� ������������������  해결한����������� ������������������  수정����������� ������������������  버전인����������� ������������������  OAuth����������� ������������������  1.0����������� ������������������  revision����������� ������������������  A����������� ������������������  가����������� ������������������  2008년에����������� ������������������  나왔다.

OAuth의����������� ������������������  시작은����������� ������������������  2006년에����������� ������������������  트위터의����������� ������������������  개발자와����������� ������������������  소셜����������� ������������������  북마크����������� ������������������  서비스인����������� ������������������  Gnolia의����������� ������������������  개발자가����������� ������������������  만나����������� ������������������  인증����������� ������������������  방식을����������� ������������������  논의한����������� ������������������  때부터였다.����������� ������������������  두����������� ������������������  회사의����������� ������������������  개발자들은����������� ������������������  그때까지����������� ������������������  API����������� ������������������  접근����������� ������������������  위임에����������� ������������������  대한����������� ������������������  표준안이����������� ������������������  없다는����������� ������������������  것을����������� ������������������  알았다.����������� ������������������  그래서����������� ������������������  2007년����������� ������������������  4월����������� ������������������  인터넷에����������� ������������������  OAuth����������� ������������������  논의체를����������� ������������������  만든����������� ������������������  뒤����������� ������������������  OAuth드래프트����������� ������������������  제안서를����������� ������������������  만들어����������� ������������������  공유했다.����������� ������������������  그����������� ������������������  뒤에����������� ������������������  이����������� ������������������  활동을����������� ������������������  지지하는����������� ������������������  사람이����������� ������������������  생기게����������� ������������������  되었고,����������� ������������������  2008년����������� ������������������  IETF����������� ������������������  모임(73회,����������� ������������������  미네소타에서����������� ������������������  개최)에서����������� ������������������  OAuth가����������� ������������������  IETF����������� ������������������  표준안으로����������� ������������������  관리되야����������� ������������������  하는����������� ������������������  가에����������� ������������������  대한����������� ������������������  논의가����������� ������������������  있었다.����������� ������������������  그리고����������� ������������������  2010년에����������� ������������������  OAuth����������� ������������������  1.0����������� ������������������  프로토콜����������� ������������������  표준안이����������� ������������������  RFC5849로����������� ������������������  발표되었다.

2007년에����������� ������������������  나온����������� ������������������  OAuth����������� ������������������  1.0은����������� ������������������  비공식����������� ������������������  논의체에����������� ������������������  의해����������� ������������������  최초로����������� ������������������  만들어진����������� ������������������  것이고,����������� ������������������  2010년����������� ������������������  IETF����������� ������������������  OAuth����������� ������������������  워킹그룹에����������� ������������������  의해����������� ������������������  이����������� ������������������  프로토콜이����������� ������������������  IETF����������� ������������������  표준����������� ������������������  프로토콜로����������� ������������������  발표된����������� ������������������  것이다.

현재����������� ������������������  나와����������� ������������������  있는����������� ������������������  OAuth����������� ������������������  2.0은����������� ������������������  드래프트����������� ������������������  단계에����������� ������������������  있는����������� ������������������  것으로,����������� ������������������  IETF����������� ������������������  OAuth����������� ������������������  워킹그룹이����������� ������������������  주축이����������� ������������������  되어����������� ������������������  만든����������� ������������������  것이다.����������� ������������������  OAuth����������� ������������������  2.0은����������� ������������������  OAuth����������� ������������������  1.0과����������� ������������������  호환되지����������� ������������������  않지만,����������� ������������������  인증����������� ������������������  절차가����������� ������������������  간략하다는����������� ������������������  장점이����������� ������������������  있다.

......����������� ������������������  중략

OAuth란?

Page 7: [Hello world 오픈 세미나]oauth

이제����������� ������������������  모바일����������� ������������������  시대인만큼우리서비스도����������� ������������������  오픈����������� ������������������  API를제공해����������� ������������������  많은����������� ������������������  곳에서����������� ������������������  사용하게����������� ������������������  하고����������� ������������������  싶은데요

로그인이����������� ������������������  필요한����������� ������������������  서비스라그냥����������� ������������������  제공이����������� ������������������  어려워요..

외부에서����������� ������������������  로그인을����������� ������������������  할수있게����������� ������������������  해주면되지����������� ������������������  않을까요?

로그인을����������� ������������������  제공한다는����������� ������������������  것은����������� ������������������  오픈����������� ������������������  API를����������� ������������������  제공해주는����������� ������������������  서비스뿐만����������� ������������������  아니라����������� ������������������  

서비스����������� ������������������  내의����������� ������������������  다른����������� ������������������  기능도����������� ������������������  접근할����������� ������������������  수����������� ������������������  있어����������� ������������������  위험한����������� ������������������  방식이라����������� ������������������  큰일납니다.

Page 8: [Hello world 오픈 세미나]oauth

다른서비스는����������� ������������������  접근하지����������� ������������������  못하게로그인을����������� ������������������  제공해줄����������� ������������������  수����������� ������������������  없나요?

그렇다면����������� ������������������  OAuth를����������� ������������������  말씀하시는것����������� ������������������  같은데요?����������� ������������������  그건����������� ������������������  컨슈머키와보안키를����������� ������������������  제공해����������� ������������������  주고����������� ������������������  통신하는...

OAuth가����������� ������������������  뭔진����������� ������������������  모르겠지만로그인����������� ������������������  방식이����������� ������������������  아니라는거죠?

로그인을����������� ������������������  제공하는����������� ������������������  것이����������� ������������������  아니라외부����������� ������������������  사용자에게����������� ������������������  서비스의����������� ������������������  접근����������� ������������������  권한을����������� ������������������  주는����������� ������������������  방식이긴����������� ������������������  한데..����������� ������������������  로그인����������� ������������������  과정은����������� ������������������  거칩니다.

Page 9: [Hello world 오픈 세미나]oauth

이런방식으로����������� ������������������  외부에로그인을����������� ������������������  제공해주고����������� ������������������  사용자가����������� ������������������  접근권한을결정하는����������� ������������������  방식이에요

이런����������� ������������������  십장생..����������� ������������������  로그인을����������� ������������������  하는데����������� ������������������  로그인이����������� ������������������  아니라니????나를����������� ������������������  놀리는건가?

Page 10: [Hello world 오픈 세미나]oauth

OAuth는����������� ������������������  사용자가����������� ������������������  3rd����������� ������������������  Party의����������� ������������������  애플리케이션에게����������� ������������������  특정����������� ������������������  권한을����������� ������������������  일임할����������� ������������������  것인지����������� ������������������  확인을����������� ������������������  위해����������� ������������������  

애플리케이션이����������� ������������������  아닌����������� ������������������  API����������� ������������������  제공서비스에����������� ������������������  로그인을����������� ������������������  합니다.

Page 11: [Hello world 오픈 세미나]oauth

OAuth는����������� ������������������  사용자가����������� ������������������  3rd����������� ������������������  Party의����������� ������������������  애플리케이션에게����������� ������������������  특정����������� ������������������  권한을����������� ������������������  일임할����������� ������������������  것인지����������� ������������������  확인을����������� ������������������  위해����������� ������������������  

애플리케이션이����������� ������������������  아닌����������� ������������������  API����������� ������������������  제공서비스에����������� ������������������  로그인을����������� ������������������  합니다.

Page 12: [Hello world 오픈 세미나]oauth

OAuth는����������� ������������������  사용자가����������� ������������������  3rd����������� ������������������  Party의����������� ������������������  애플리케이션에게����������� ������������������  특정����������� ������������������  권한을����������� ������������������  일임할����������� ������������������  것인지����������� ������������������  확인을����������� ������������������  위해����������� ������������������  

애플리케이션이����������� ������������������  아닌����������� ������������������  API����������� ������������������  제공서비스에����������� ������������������  로그인을����������� ������������������  합니다.

Page 13: [Hello world 오픈 세미나]oauth

그리고����������� ������������������  OAuth가����������� ������������������  자리잡기����������� ������������������  전까지만����������� ������������������  해도..����������� ������������������  

Page 14: [Hello world 오픈 세미나]oauth

facebookTwitter

Flickr me2DAY

SNSWriter����������� ������������������  Application

SNS����������� ������������������  Writer

작성완료

로그인����������� ������������������  방식이����������� ������������������  다����������� ������������������  다르다..

OAuth는����������� ������������������  너무����������� ������������������  어려워..����������� ������������������  우리는����������� ������������������  더����������� ������������������  쉽게����������� ������������������  제공하자

SNS����������� ������������������  Writer는����������� ������������������  트위터,����������� ������������������  페이스북,����������� ������������������  플리커,����������� ������������������  미투데이에����������� ������������������  게시글을����������� ������������������  단����������� ������������������  한번에����������� ������������������  모두����������� ������������������  게시하는����������� ������������������  SNS����������� ������������������  통합����������� ������������������  애플리케이션����������� ������������������  입니다.����������� ������������������  

Page 15: [Hello world 오픈 세미나]oauth

그래서����������� ������������������  외부����������� ������������������  인증에����������� ������������������  대한����������� ������������������  표준이����������� ������������������  필요했습니다.����������� ������������������  

Page 16: [Hello world 오픈 세미나]oauth

OAuth����������� ������������������  개념����������� ������������������  파헤치기!

Page 17: [Hello world 오픈 세미나]oauth

content-from����������� ������������������  :����������� ������������������  http://oauth.net/core/diagram.png

Aㅏ...����������� ������������������  컨슈머....����������� ������������������  프로바이더.....����������� ������������������  컨슈머..����������� ������������������  

Page 18: [Hello world 오픈 세미나]oauth

content-from����������� ������������������  :����������� ������������������  http://oauth.net/core/diagram.png

Aㅏ...����������� ������������������  컨슈머....����������� ������������������  프로바이더.....����������� ������������������  컨슈머..����������� ������������������  

Page 19: [Hello world 오픈 세미나]oauth
Page 20: [Hello world 오픈 세미나]oauth

방문객

소셜게임서비스팀에서����������� ������������������  근무하는김철수님����������� ������������������  만나러����������� ������������������  왔습니다.����������� ������������������  

Page 21: [Hello world 오픈 세미나]oauth

방문객

소셜게임서비스팀에서����������� ������������������  근무하는김철수님����������� ������������������  만나러����������� ������������������  왔습니다.����������� ������������������  

아����������� ������������������  그렇군요,����������� ������������������  잠시만����������� ������������������  기다리세요.김철수님께서����������� ������������������  내려오실거에요.

안내데스크

리퀘스트토큰����������� ������������������  요청

Page 22: [Hello world 오픈 세미나]oauth

방문객

소셜게임서비스팀에서����������� ������������������  근무하는김철수님����������� ������������������  만나러����������� ������������������  왔습니다.����������� ������������������  

이����������� ������������������  분은����������� ������������������  오늘����������� ������������������  저와����������� ������������������  미팅하실����������� ������������������  분이맞아요~����������� ������������������  방문증����������� ������������������  발급바랍니다.

방문객����������� ������������������  확인자

아����������� ������������������  그렇군요,����������� ������������������  잠시만����������� ������������������  기다리세요.김철수님께서����������� ������������������  내려오실거에요.

안내데스크

리퀘스트토큰����������� ������������������  요청

권한확인����������� ������������������  요청

Page 23: [Hello world 오픈 세미나]oauth

방문객

소셜게임서비스팀에서����������� ������������������  근무하는김철수님����������� ������������������  만나러����������� ������������������  왔습니다.����������� ������������������  

이����������� ������������������  분은����������� ������������������  오늘����������� ������������������  저와����������� ������������������  미팅하실����������� ������������������  분이맞아요~����������� ������������������  방문증����������� ������������������  발급바랍니다.

방문객����������� ������������������  확인자

아����������� ������������������  그렇군요,����������� ������������������  잠시만����������� ������������������  기다리세요.김철수님께서����������� ������������������  내려오실거에요.

안내데스크

방문증은����������� ������������������  4층만����������� ������������������  출입가능합니다.4층����������� ������������������  출입부탁드립니다~

안내데스크

액세스토큰����������� ������������������  발급

리퀘스트토큰����������� ������������������  요청

권한확인����������� ������������������  요청

액세스토큰����������� ������������������  요청

Page 24: [Hello world 오픈 세미나]oauth

방문객이����������� ������������������  김철수����������� ������������������  대리의����������� ������������������  사원증을����������� ������������������  탈취한다면?

Page 25: [Hello world 오픈 세미나]oauth

OAuth����������� ������������������  동작방식의����������� ������������������  이해����������� ������������������  

Page 26: [Hello world 오픈 세미나]oauth

http://dev.naver.com����������� ������������������  >>����������� ������������������  OAuth����������� ������������������  >>����������� ������������������  애플리케이션����������� ������������������  등록

Page 27: [Hello world 오픈 세미나]oauth

OAuth의����������� ������������������  기본은����������� ������������������  

HTTP����������� ������������������  Protocol

Page 28: [Hello world 오픈 세미나]oauth

-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐[HTTP  Method]  [URL  PATH]  HTTP/1.1Host:  [URL  HOST]-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐Message

Header

Body

GET  /naver.oauth?mode=req_req_token  HTTP/1.1Accept-­‐Encoding:  gzip,  deflateConnection:  Keep-­‐AliveHost:  nid.naver.com

http://nid.naver.com/naver.oauth?mode=req_req_token

example

Page 29: [Hello world 오픈 세미나]oauth

POST  /naver.oauth  HTTP/1.1\r\nConnection:  Keep-­‐Alive\r\nHost:  nid.naver.com\r\n\r\nmode=req_req_token\r\n\r\n\r\n

http://nid.naver.com/naver.oauth?mode=req_req_token

POST  /naver.oauth  HTTP/1.1\r\nContent-­‐Type:multipart/form-­‐data;  boundary="a12ddggs"\r\nConnection:  Keep-­‐Alive\r\nHost:  nid.naver.com\r\n\r\n-­‐-­‐a12ddggs\r\nContent-­‐Disposition:form-­‐data;  name=mode\r\n\r\nreq_req_token\r\n\r\n\r\n

Page 30: [Hello world 오픈 세미나]oauth

•일회성•한시성•보안성

OAuth����������� ������������������  주요����������� ������������������  파라미터의����������� ������������������  특징����������� ������������������  

oauth_nonce

oauth_timestamp

oauth_signature

이����������� ������������������  외에����������� ������������������  oauth_signature_method,����������� ������������������  oauth_version,����������� ������������������  oauth_consumer_key����������� ������������������  등이����������� ������������������  있음.

Page 31: [Hello world 오픈 세미나]oauth

OAuth����������� ������������������  스펙����������� ������������������  구현해보기

Page 32: [Hello world 오픈 세미나]oauth

oauth_callback 권확����������� ������������������  확인����������� ������������������  후����������� ������������������  이동할����������� ������������������  URL(또는����������� ������������������  oob)

oauth_consumer_key API����������� ������������������  사용자����������� ������������������  키

oauth_nonce 임의의����������� ������������������  문자열����������� ������������������  (동일����������� ������������������  시간대����������� ������������������  요청에����������� ������������������  대해����������� ������������������  유일한����������� ������������������  문자열이어야����������� ������������������  함)

oauth_signature URL정보를����������� ������������������  조합하여����������� ������������������  비밀키로����������� ������������������  암호화한����������� ������������������  문자열

oauth_signature_method oauth_signature의����������� ������������������  암호화����������� ������������������  방식

oauth_timestamp 1970이후를����������� ������������������  초단위로����������� ������������������  환산한����������� ������������������  값

oauth_version OAuth의����������� ������������������  버전����������� ������������������  (1.0a까지는����������� ������������������  1.0으로����������� ������������������  명시)

Request����������� ������������������  Token요청을����������� ������������������  위해����������� ������������������  필요한����������� ������������������  매개변수

oauth_token request����������� ������������������  token

oauth_token_secret consumer����������� ������������������  secret����������� ������������������  key와����������� ������������������  조합하는����������� ������������������  추가����������� ������������������  비밀키

Request����������� ������������������  Token요청����������� ������������������  완료����������� ������������������  시����������� ������������������  결과����������� ������������������  값

Page 33: [Hello world 오픈 세미나]oauth

oauth_signature

https://nid.naver.com/naver.oauth?mode=req_req_token&oauth_callback=http://example.com/oauth_result.do&oauth_consumer_key=WEhGuJZWUasHg&oauth_nonce=zSs4RFI66oauth_signature_method=HMAC-­‐SHA1&oauth_timestamp=1330442419&oauth_version=1.0

oauth_signature를����������� ������������������  제외한����������� ������������������  나머지����������� ������������������  URL

BASE64_ENCODE(HMAC-SHA1(GET����������� ������������������  +����������� ������������������  encode(https://nid.naver.com/naver.oauth)����������� ������������������  +mode=encode(req_req_token)&oauth_callback=encode(http://example.com/oauth_result.do)&oauth_nonce=encode(zSs4RFI66)&oauth_signature_method=encode(HMAC-SHA1)&oauth_timestamp=1330442419&oauth_version=1.0

,����������� ������������������  SECRET_KEY))

consumer����������� ������������������  secret����������� ������������������  key����������� ������������������  +����������� ������������������  “&”����������� ������������������  +����������� ������������������  oauth_token_secret

Page 34: [Hello world 오픈 세미나]oauth

GET[HTTP����������� ������������������  METHOD]

Page 35: [Hello world 오픈 세미나]oauth

GET[HTTP����������� ������������������  METHOD]+����������� ������������������  URL[URL����������� ������������������  PATH]

Page 36: [Hello world 오픈 세미나]oauth

GET[HTTP����������� ������������������  METHOD]+����������� ������������������  &����������� ������������������  +URL[URL����������� ������������������  PATH]����������� ������������������  

+����������� ������������������  &����������� ������������������  +����������� ������������������  PARAMETER[key=value]

Page 37: [Hello world 오픈 세미나]oauth

surprise����������� ������������������  QUIZ!

Page 38: [Hello world 오픈 세미나]oauth

https://nid.naver.com/naver.oauth?mode=req_req_token&oauth_callback=http://example.com/oauth_result.do&oauth_consumer_key=WEhGuJZWUasHg&oauth_nonce=zSs4RFI66oauth_signature_method=HMAC-­‐SHA1&oauth_timestamp=1330442419&oauth_version=1.0

surprise����������� ������������������  QUIZ!

Page 39: [Hello world 오픈 세미나]oauth

HMAC-SHA1(

)

GET[HTTP����������� ������������������  METHOD]+����������� ������������������  &����������� ������������������  +����������� ������������������  URL[URL����������� ������������������  PATH]����������� ������������������  +����������� ������������������  &����������� ������������������  +����������� ������������������  PARAMETER[key=value]

Page 40: [Hello world 오픈 세미나]oauth

GET[HTTP����������� ������������������  METHOD]+����������� ������������������  &����������� ������������������  +����������� ������������������  URL[URL����������� ������������������  PATH]����������� ������������������  +����������� ������������������  &����������� ������������������  +����������� ������������������  PARAMETER[key=value]

HMAC-SHA1(

)

BASE64.encode(

)

Page 41: [Hello world 오픈 세미나]oauth

https://nid.naver.com/naver.oauth?mode=auth_req_token&oauth_token=wpsCb0Mcpf9dDDC2

권한확인����������� ������������������  페이지����������� ������������������  호출하기����������� ������������������  

oauth_token����������� ������������������  매개변수만����������� ������������������  정의하면����������� ������������������  끝!

oauth_token 액세스����������� ������������������  토큰����������� ������������������  호출용����������� ������������������  권한확인이����������� ������������������  완료된����������� ������������������  토큰

oauth_varifier access����������� ������������������  token����������� ������������������  호출����������� ������������������  시����������� ������������������  사용될����������� ������������������  매개변수

권한요청����������� ������������������  완료����������� ������������������  시����������� ������������������  callback_url로����������� ������������������  전달되는����������� ������������������  결과����������� ������������������  값

Page 42: [Hello world 오픈 세미나]oauth

oauth_verifier 권한����������� ������������������  확인����������� ������������������  후����������� ������������������  발급받은����������� ������������������  oauth_verifier����������� ������������������  값

oauth_consumer_key API����������� ������������������  사용자����������� ������������������  키

oauth_nonce 임의의����������� ������������������  문자열����������� ������������������  (동일����������� ������������������  시간대����������� ������������������  요청에����������� ������������������  대해����������� ������������������  유일한����������� ������������������  문자열이어야����������� ������������������  함)

oauth_signature URL정보를����������� ������������������  조합하여����������� ������������������  비밀키로����������� ������������������  암호화한����������� ������������������  문자열

oauth_signature_method oauth_signature의����������� ������������������  암호화����������� ������������������  방식

oauth_timestamp 1970이후를����������� ������������������  초단위로����������� ������������������  환산한����������� ������������������  값

oauth_version OAuth의����������� ������������������  버전����������� ������������������  (1.0a까지는����������� ������������������  1.0으로����������� ������������������  명시)

oauth_token 권한����������� ������������������  확인����������� ������������������  후����������� ������������������  발급받은����������� ������������������  oauth_token����������� ������������������  값

Access����������� ������������������  Token요청을����������� ������������������  위해����������� ������������������  필요한����������� ������������������  매개변수

oauth_token API����������� ������������������  접근이����������� ������������������  가능한����������� ������������������  토큰

oauth_token_secret consumer����������� ������������������  secret����������� ������������������  key와����������� ������������������  조합하는����������� ������������������  추가����������� ������������������  비밀키

Access����������� ������������������  Token요청����������� ������������������  완료����������� ������������������  시����������� ������������������  결과����������� ������������������  값

Page 43: [Hello world 오픈 세미나]oauth

OAuth����������� ������������������  를����������� ������������������  이용해����������� ������������������  API를����������� ������������������  호출해����������� ������������������  보자!

Page 44: [Hello world 오픈 세미나]oauth

POST  /naver.oauth  HTTP/1.1\r\nContent-­‐Type:multipart/form-­‐data;  boundary="a12ddggs"\r\nConnection:  Keep-­‐Alive\r\nAuthorization:  OAuth  oauth_consumer_key="11sdfj123bAsd",  oauth...Host:  nid.naver.com\r\n\r\n-­‐-­‐a12ddggs\r\nContent-­‐Disposition:form-­‐data;  name=mode\r\n\r\nreq_req_token\r\n\r\n\r\n

oauth_consumer_key API����������� ������������������  사용자����������� ������������������  키

oauth_nonce 임의의����������� ������������������  문자열����������� ������������������  (동일����������� ������������������  시간대����������� ������������������  요청에����������� ������������������  대해����������� ������������������  유일한����������� ������������������  문자열이어야����������� ������������������  함)

oauth_signature URL정보를����������� ������������������  조합하여����������� ������������������  비밀키로����������� ������������������  암호화한����������� ������������������  문자열

oauth_signature_method oauth_signature의����������� ������������������  암호화����������� ������������������  방식

oauth_timestamp 1970이후를����������� ������������������  초단위로����������� ������������������  환산한����������� ������������������  값

oauth_version OAuth의����������� ������������������  버전����������� ������������������  (1.0a까지는����������� ������������������  1.0으로����������� ������������������  명시)

oauth_token 권한����������� ������������������  확인����������� ������������������  후����������� ������������������  발급받은����������� ������������������  oauth_token����������� ������������������  값

서비스����������� ������������������  매개변수����������� ������������������  정의

Page 45: [Hello world 오픈 세미나]oauth

네이버의����������� ������������������  OAuth����������� ������������������  기반����������� ������������������  API����������� ������������������  DEMO

Page 46: [Hello world 오픈 세미나]oauth

총정리

Page 47: [Hello world 오픈 세미나]oauth

발표자����������� ������������������  :����������� ������������������  오창훈이메일����������� ������������������  :����������� ������������������  [email protected]����������� ������������������  me2DAY����������� ������������������  :����������� ������������������  me2day.net/lovedev