1.èªèšŒ(Authentication) ãŠãŒã¶èªèº«ãäœè ã§ãããšäž»åŒµããŠããããæ€èšŒããããã»ã¹ ãŠãŒã¶åã衚ãã®ã¯ãŠãŒã¶ã䞻匵ããã¢ã€ãã³ãã£ãã£ã§ãããã¢ããªã±ãŒã·ã§ã³åŽã¯ããŠãŒã¶ã®å ¥åãããã¹ã¯ãŒããæ£ãããã°ãæ¬äººã§ãããšã¿ãªã
2.é£ååèªèšŒ(Federated Authentication) ãŠãŒã¶ã¢ã€ãã³ãã£ãã£ã®æ€èšŒããã»ã¹ãå€éšãµãŒãã¹ã«äŸåããŠããã¢ããªã±ãŒã·ã§ã³ã®ããšãããã OpenIDãªã©ãæå(OpenIDãããã€ãã®GoogleãšãYahoo!ãšã)
3.èªå¯(Authorization) äœããã®è¡çºãè¡ãéã«ããŠãŒã¶ã«ãã®æš©éããããã©ãããæ€èšŒããããã»ã¹ã webã¢ããªã±ãŒã·ã§ã³ã¯æåã«ãã°ã€ã³ããŠããIDã確èªããããšãåæäœã«å¯Ÿããã¢ã¯ã»ã¹ã³ã³ãããŒã«ãªã¹ããåç §ããŠããã®ã¢ã¯ã»ã¹ãèš±å¯ãããŠããç¯å²ã®ããŒã¿ãšãµãŒãã¹ã«å¯Ÿãããã®ãã確èªããã
4.å§è²èªå¯(Delegated Authorization) ä»äººãã¢ããªã±ãŒã·ã§ã³ã«èªåã«ä»£ãã£ãŠã¢ã¯ã·ã§ã³ãå®è¡ããŠãããããã«ã¢ã¯ã»ã¹ãäžããããšã ãŠãŒã¶ã¯ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹æš©éãäžãããŠãŒã¶ã®ããã«ã¢ã¯ã·ã§ã³ãå®è¡ããŠãããããã ããã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããã®ã¯èªå¯ãããã¢ã¯ã·ã§ã³ã®ã¿(scopeçãªããªïŒ)
5.ããŒã«(Roles) OAuthãããã³ã«ã«æé ã«ç»å Žããäž»ãªåäœäž»äœ
- 
ãªãªãŒã¹ãµãŒã OAuthã«ãã£ãŠä¿è·ããããŠãŒã¶ååŸãªãœãŒã¹ãä¿æãæäŸãããµãŒãAPIãããã€ããšãããããæã 
- 
ãªãªãŒã¹ææè ã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ããªãœãŒã¹ãµãŒããä¿æãããžãºããã®ããŒã¿ã«å¯Ÿããã¢ã¯ã»ã¹ãèš±å¯ãã 
- 
ã¯ã©ã€ã¢ã³ã ãªãœãŒã¹ææè ã®èªå¯ãåããä¿è·ããããªãœãŒã«å¯ŸããŠäœããã®ã¢ã¯ã·ã§ã³ãèµ·ããããææè ã«ä»£ãã£ãŠAPIã«ãªã¯ãšã¹ããè¡ãã¢ããªã±ãŒã·ã§ã³(ã³ã³ã·ã¥ãŒãã®ã¢ããªçãªæã) 
- 
èªå¯ãµãŒã ãªãœãŒã¹ææè ã®åæãåŸãŠãkã©ã€ã¢ã³ãšã«ãªãœãŒã¹ãµãŒãäžã®ä¿è·ããããªãœãŒã¹ã«å¯Ÿããã¢ã¯ã»ã¹ããŒã¯ã³ãçºè¡ããã 
MACéµã¯hmac-sha-1 ã hmac-sha256ã®ã¢ã«ãŽãªãºã ã§çæããããã®ã§ãªããã°ãããªã 眲åãå¿ é ãªOAuht察å¿APIãžã®æ¥ç¶ã§ã¯å šãŠã®APIãªã¯ãšã¹ãã®Authorizationãããã«MAC眲åãå«ãŸããŠããªããã°ããªããªã
OAuthèªå¯ãµãŒãèªèº«ã§çºè¡ access_tokenãèªå¯ãµãŒãããè¿ãããã¿ã€ãã³ã°ã§æ¯åéµãåž°ã£ãŠããã ãŸãã¯ãéçºè ãAPIproviderã«ã¢ããªã±ãŒã·ã§ã³ãç»é²ãããšãã«MACéµãAPIãªã¯ãšã¹ãæä»¥å€ã®å¥ããã»ã¹ã§çºè¡ãããå Žåããããã©ããªæ¹æ³ã§çºè¡ãããéµã§ã SSL/TLSãã£ãã«ã«ãã£ãŠæ©å¯ã«ä¿ãããŠããªããšãããªã
眲åãå¿ é ãªOAuth察å¿APIãžã®æ¥ç¶ã§ã¯ãå šãŠã®APIãªã¯ãšã¹ãã®Authorizationãããã«MAC眲åãå«ãŸããŠããªããšãããªãã 眲åãäœæããã«ã¯ãªã¯ãšã¹ãæåå(èªèšŒçšä¹±æ°ãHTTPã¡ãœããããªã¯ãšã¹ãURIããã¹ãåãããŒãçªå·ãããã£ã®ããã·ã¥å€ãªã©)ãæ£èŠåããŠãæå·åããªããšãããªãã
OAuthã¢ããªã±ãŒã·ã§ã³ãç»é²ãããšã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ãçºè¡ããã
- 
ã¯ã©ã€ã¢ã³ãID 
 ãªãœãŒã¹ãµãŒããšéä¿¡ããéã®client_idã®å€ãšããŠæå®
- 
ã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ãã èªå¯ã³ãŒããã¢ã¯ã»ã¹ããŒã¯ã³ããªãã¬ãã·ã¥ããŒã¯ã³ãšäº€æãããšãã«client_secretã®å€ãšããŠæå® 
ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ã¯èªå¯ã³ãŒãããã¢ã¯ã»ã¹ããŒã¯ã³ãžã®äº€æããã¢ã¯ã»ã¹ããŒã¯ã³ã®æŽæ°ãªã©ãè¡ãéã«ããããã®ãªã¯ãšã¹ãã®ä¿¡é Œæ§ãå®ãããã«äœ¿ãããã
ä¿è·ããããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã§å¿ èŠãšãªãããŒã¯ã³å€ã ããå«ãŸããã¢ã¯ã»ã¹ããŒã¯ã³
OAuth2.0ãå©çšããAPIã®å€ãããªã¯ãšã¹ãèªå¯ã§å¿ é ãšããŠããã®ã¯ãã¢ã©ãŒããŒã¯ã³ã®ã¿ããã¢ã©ãŒããŒã¯ã³ã䜿ã£ãèªå¯ã§ã¯ãAPIãªã¯ãšã¹ããäœæãããšãã«æå·éµã®ãããªè¿œå æ å ±ãå«ããå¿ èŠããªã OAuthã䜿ãå Žåã¯å šãŠåãã¢ã¯ã»ã¹ããŒã¯ã³ååŸããŠãAPIãªã¯ãšã¹ããå®è¡ããããš ã¢ã¯ã»ã¹ããŒã¯ãååŸããããã®ããŒã¯ã³ãAPIãªã¯ãšã¹ããšãšãã«éãã æé©ãªæ¹æ³ã¯ HTTPã®Authorizationãããã䜿ãããšã
GET /unko/v1/product/@default/list HTTP/1.1 Host:www.unko.com Authorization:Bearer unko.hash
authorizationãããã䜿ãã®ãåªããŠããçç±ã¯
- 
ãããã¯ãããã·ãµãŒããwebãµãŒãã®ã¢ã¯ã»ã¹ãã°ã«ãã°ãšããŠæ®ãããšãã»ãŒãªã 
- 
ãããããã£ãã·ã¥ãããããšãã»ãŒãªã 
- 
ã¯ã©ã€ã¢ã³ãããªã¯ãšã¹ããè¡ããšãã«ããããã¯ãã©ãŠã¶ãã£ãã·ã¥ã«æ®ããªã 
OAuth2.0ã§ã¯ä»ã®æ¹æ³ãå®çŸ©ãããŠããããå®è£ ãããã¯ãããã€ããæ±ºããããšã
ä»ã®æ¹æ³ 1.ã¯ãšãªãã©ã¡ãŒã¿ access_tokenãURLã¯ãšãªãã©ã¡ãŒã¿ã«è¿œå ããæ¹æ³ããããã¯æãªã©ã¯äŸ¿å©ãã¯ã©ã€ã¢ã³ããµã€ããããŒã䜿ã£ãŠããå Žåã¯JSONPã®ãªã¯ãšã¹ã圢åŒã®ãããã®æ¹æ³ã圹ã«ç«ã€
https://www.unko.com/unko/v1/product/@default/list?callback=outputTasks&access_token=unko.hash ãããªæã
2.ãã©ãŒã ãšã³ã³ãŒããããããã£ãŒãã©ã¡ãŒã¿ ã¢ããªã±ãŒã·ã§ã³ãAuthorizationãããã倿Žã§ããªãå Žåã®ææ®µãHTTPããã£ãHTTPããã£ã«application/x-www-form-urlencodedã³ã³ãã³ãã¿ã€ãã®ãã©ã¡ãŒã¿ã远å ã§ããå Žåã®ã¿äœ¿ãã
OAuth2.0ãããã³ã«ã§ã¯ãèªå¯ãåŸãããã«äœ¿ãããïŒã€ã®åºæ¬çãªãã°ã©ã³ãã¿ã€ãã(èªå¯äŸäžæ¹åŒ)ãšãæ¡åŒµæ¹æ³ãå®çŸ©ãããŠãã
1.èªå¯ã³ãŒã ãªãœãŒã¹ææè ãããŒã¿ãžã®ã¢ã¯ã»ã¹ãèªå¯ãããšããã®åŸãwebã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ããããããURLã®ã¯ãšãªãã©ã¡ãŒã¿è»œèŠãã®èªå¯ã³ãŒããæž¡ããããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã®èªå¯ã³ãŒããã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æããã亀æã®éã«ã¯client_idãšclient_secretãå¿ é ããŸãããªãã¬ãã·ã¥ããŒã¯ã³ã䜿ã£ãŠãAPIãžã®ã¢ã¯ã»ã¹ãé·æã«ããã£ãŠå¯èœã«ããããšãã§ããã
2.ã€ã³ããªã·ããã°ã©ã³ã(ãã©ãŠã¶ããŒã¹ã®ã¯ã©ã€ã¢ã³ããµã€ãã¢ããªã±ãŒã·ã§ã³çš) ãã©ãŠã¶ã§åäœããã¯ã©ã€ã¢ã³ããµã€ãwebã¢ããªã±ãŒã·ã§ã³çšã«ç¹åãããŠããããªãœãŒã¹ææè ãã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ãããšå³åº§ã«æ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãçæãããURLã®ããã·ã¥ãã©ã°ã¡ã³ãã䜿ã£ãŠã¢ããªã±ãŒã·ã§ã³ã«éããããjsãªã©ã䜿ã£ãŠããã·ã¥ãã©ã°ã¡ã³ãããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããŠAPIãå®è¡ãèªå¯ã³ãŒãã¯äžèŠã ããªãã¬ãã·ã¥ããŒã¯ã³ã¯äœ¿ããªãã
3.ãªãœãŒã¹ææè ãã¹ã¯ãŒãã¯ã¬ãã³ã·ã£ã« ãªãœãŒã¹ææè ã®ãŠãŒã¶å/ãã¹ã¯ãŒããOAuhtã¢ã¯ã»ã¹ããŒã¯ã³ãšäº€æã§ãããAPIãããã€ãèªèº«ãéçºããã¢ããªã±ãŒã·ã§ã³ãªã©ã®ä¿¡çšã§ããã¯ã©ã€ã¢ã³ãã§ã®ã¿äœ¿ããããäžåºŠèªèšŒãçµããã°ãããšã¯OAuthããŒã¯ã³ã ããïœä¿åããŠããã°ãªãã±ãŒã
4.ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã« ã¢ããªã±ãŒã·ã§ã³èªèº«ã®ææãããªãœãŒã¹ã«å¯Ÿãã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããå ŽåããŸãã¯ãèªå¯ãµãŒããšã®äºåã®ãããšãã«ãã£ãŠããã§ã«èªå¯ãåŸãŠããå Žåã«äœ¿çšãããç¹å®ã®ãŠãŒã¶ã§ã¯ãªãã®ã§ãã¹ãã¬ãŒãžãµãŒãã¹ãããŒã¿ããŒã¹ãªã©ã®APIã¢ã¯ã»ã¹ãå¿ èŠãªå Žåã«é©ããŠããã
以äžã¯è¿œå çãªãããŒ
5.ããã€ã¹ãããã¡ã€ã« å ¥åæ¹æ³ã«å¶éããããããã€ã¹ã§OAuthã䜿çšããããã«äœããããã®ã FacebookhããããŒã®å®äŸã玹ä»ããŠããâ http://oauth-device-demo.appspot.com/
6.SAMLãã¢ã©ãŒã¢ãµãŒã·ã§ã³ãããã¡ã€ã« SAML2.9ã¢ãµãŒã·ã§ã³ãOAuthã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æã§ããã
ãã°æ¬OAuthã«ã€ããŠ(第äºç« )
ãªãœãŒã¹ææè ããã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠAPIãããã€ãã®OAuthèªå¯ãµãŒããžãªãã€ã¬ã¯ãããªãã€ã¬ã¯ãå ã®èªå¯ãµãŒãã¯ãŠãŒã¶ãã¢ã¯ãã£ããªã»ãã·ã§ã³ãæãŠãããã©ããã確èªããã®åŸèªå¯ãµãŒããèŠæ±ããŒã¿ã«å¯Ÿããã¢ã¯ã»ãŠãèªå¯ããããã«ä¿ãããŠãŒã¶ã¯ã¢ã¯ã»ã¹èªå¯ãããšæåã®webã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ãã§æ»ãããããURLã«ã¯codeã¯ãšãªãã©ã¡ãŒã¿ãšããŠèªå¯ã³ãŒããä»å ãããŠããã codeã¯ãšãªãã©ã¡ãŒã¿ãšããŠæž¡ããããããwebãã©ãŠã¶ããOAuthã¯ã©ã€ã¢ã³ãã§ããwebãµãŒãã«ãéãããããã®èªå¯ã³ãŒããwebãµãŒããšèªå¯ãµãŒãéã®ãããšãã§äœ¿çšããã¢ã¯ã»ã¹ããŒã¯ã³ãšäº€æããããã¯ã©ã€ã¢ã³ããAPIåŒã³åºããè¡ãéã«ãã®ã¢ã¯ã»ã¹ããŒã¯ã³ã䜿ãããã
ã¢ã¯ã»ã¹ããŒã¯ã³ã¯ãªãœãŒã¹ææè ã®ãã©ãŠã¶ããã¿ããããšã¯ãªããèªå¯ãè¡ãããã«èªå¯ã³ãŒãã䜿ããããããã¯ãã©ãŠã¶ãéããŠåãæž¡ããããä¿è·ãããAPIãåŒã³åºãéã¯èªå¯ã³ãŒããã¢ã¯ã»ã¹ããŒã¯ã³ã«å€æããŠãããªããã°ãªããªãããã®å€æããã»ã¹ã¯ãªã¯ãšã¹ããšå ±ã«ãclient_secretãæž¡ãããå Žåã®ã¿æåããããã®ãããã¯ã©ã€ã¢ã³ã®ã»ãã¥ãªãã£ãå®ãããŠããå Žåã¯ã¢ã¯ã»ã¹ããŒã¯ã³ã®æ©å¯æ§ã確ä¿ã§ãããã¢ã¯ã»ã¹ããŒã¯ã³ã®æ©å¯æ§ã¯ãªãœãŒã¹ææè ã«å¯ŸããŠãå®ããããã€ãŸããã¢ã¯ã»ã¹ããŒã¯ã³ã䜿ã£ãŠçæãããAPIãªã¯ãšã¹ãã¯ãã¯ã©ã€ã¢ã³ãšãã®éçºè ã®çŽæ¥çãªç®¡çäžã«ãããšããããšã ã¢ã¯ã»ã¹ããŒã¯ã³ã¯ãã©ãŠã¶ãä»ããŠããªãã®ã§ãå±¥æŽãrefererããããjsãªã©ããæŒæŽ©ãããªã¹ã¯ã軜æžã§ããã ã¢ã¯ã»ã¹ããŒã¯ã³ã®æŒæŽ©ãªã¯ã¹ã¯å°ãããããã®ãããŒãå©çšããã¢ããªã±ãŒã·ã§ã³ã®å€ãããããŒã¿ããŒã¹ãããŒã¹ãã¢ã«æå¹æéã®é·ããªãã¬ãã·ã¥ããŒã¯ã³ãä¿æããŠãããããŒã¿ãžã®ãªã³ã©ã€ã³ã¢ã¯ã»ã¹ãå®çŸããããã¢ããªã±ãŒã·ã§ã³ãé·æã«æž¡ããªãã©ã€ã³ã¢ã¯ã»ã¹ãèŠæ±ãããšãããªããšã倿°ã®ãŠãŒã¶ããŒã¿ã«å¯Ÿããæ»æããåŸãã¢ã¯ã»ã¹ãã€ã³ããäžç®æã«éçŽããç¶æ ã§æã€ããšã«ãªãã®ã§ãªã¹ã¯ãçãŸããããã®åé¡ã¯ã¯ã©ã€ã¢ã³ããµã€ãwebã¢ããªã±ãŒã·ã§ã³ãããŒã®ãããªä»ã®ãããŒã§ã¯ååšããªãããã®ãããªãªã¹ã¯å¢å ããã£ãŠããæ§é äžãæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãåŸãããã®ã«ãŠãŒã¶ã®ãã©ãŠã¶ãšéä¿¡ããã®ãç°¡åã§ã¯ãªããããå€ãã®webãµã€ãã¯ãªãã©ã€ã³ããŒã¿ã¢ã¯ã»ã¹ã䜿çšããã
APIãããã€ãã«ã¢ããªã±ãŒã·ã§ã³ãç»é²ãOAuthã¯ã©ã€ã³ãIDãšã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ãããå ¥æããã³ãŒããæžãã
1.ãŠãŒã¶ã«ããããå®è¡ããå 容ãç¥ãããèªå¯ãæ±ãã èªå¯ãåŸãããã«APIãããã€ãã®ãµã€ãã«ãªãã€ã¬ã¯ãããã®ã§ããŠãŒã¶ã«ããããã©ããªå 容ãå®è¡ããã®ãäºãç¥ãããŠããã¹ããã¡ãã»ãŒãžã衚瀺ããŠã add tasks to your unko ã¿ãããªã®ãã€ããŠããšã
ãšã©ãŒåŠç ãªã¯ãšã¹ããã©ã¡ãŒã¿ã«ç¡å¹ãªãã®ãå«ãŸããŠããå Žåããšã©ãŒç¶æ ãšãªãã redirect_uri,client_idããã®ä»ã®ãªã¯ãšã¹ãæ å ±ã«åé¡ããã£ãéã¯ãèªå¯ãµãŒãã¯ãŠãŒã¶ã«ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããã¢ããªã±ãŒã·ã§ã³ãžã®ãªãã€ã¬ã¯ããäžæ¢ãã ãŠãŒã¶ãã¢ã¯ã»ã¹èŠæ±ãèªããªãã£ãå Žåããšã©ãŒå¿çãçæãã access_deniedåã®ãšã©ãŒã衚ããã©ã¡ãŒã¿ãšå ±ã«redirect_uriã«ãªãã€ã¬ã¯ãããããèªå¯ãµãŒãã¯error_description(ãšã©ãŒæ å ±ã¡ãã»ãŒãž)ãerror_uri(ãšã©ãŒæ å ±ãæ²èŒããããŒãžã®URL)ãªã©ãéãããšãã§ããã OAuth2.0ã®ä»æ§ã§ã¯äžèšã®ãšã©ãŒãå®çŸ©ãããŠãã
- 
invalid_request ãªã¯ãšã¹ãã«å¿ èŠãªãã©ã¡ãŒã¿äžè¶³ããµããŒãå€ã®å€æå®ããã®ä»ã®äžæ£ãªåœ¢åŒ 
- 
unauthorized_client èªå¯ã³ãŒãèŠæ±ãèªããããŠããªãã¯ã©ã€ã¢ã³ãããã®ãªã¯ãšã¹ã 
- 
unsupported_response_type èªå¯ãµãŒãããµããŒãããŠããªã圢åŒã§èªå¯ã³ãŒããã®ååŸããã 
- 
invalid_scope ããããããã¹ã³ãŒããç¡å¹/æªå®çŸ©/äžæ£ãªåœ¢åŒ 
- 
server_error èªå¯ãµãŒãã§æ³å®å€ã®ãšã©ãŒãçºçãããªã¯ãšã¹ããå®è¡ã§ããªã 
- 
temporarily_unavailable äžæçãªé«è² è·ãªã©ã«ããåŠçã§ããªã 
2.èªå¯ã³ãŒããã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æãã èªèšŒããã»ã¹ã«ãšã©ãŒããªããã°ãèªå¯ãµãŒãã¯ãŠãŒã¶ãredirect_urlã§æå®ãããURLã«ãªãã€ã¬ã¯ãããããŠãŒã¶ãã¢ã¯ã»ã¹ãèªèšŒããå Žåãwebã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ãã§æ»ãå·®ç°ãïŒã€ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»å ããã
- 
code èªå¯ã³ãŒãããŠãŒã¶ãã¢ã¯ã»ã¹èŠæ±ãæ¿èªããããšã瀺ã 
- 
state èªå¯ãµãŒãã«æåã«ãªã¯ãšã¹ããéã£ãæã«æž¡ããstateãã©ã¡ãŒã¿ã®å€ 
ãã®stateå€ãæåã«äœæsãå€ãšæ¯èŒããäžèŽããªããã°CSRFæ»æã®å¯èœæ§ãããããã®å Žåã¯OAuthãäžæãã¹ãã éãããŠããã³ãŒããAPIãªã¯ãšã¹ãã«äœ¿çšããOAuthã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æããå¿ èŠãããããã©ã€ãã©ãªãªã©ã䜿çšããªãå Žåã¯ãããŒã¯ã³ãšã³ããã€ã³ãã«å¯ŸããHTTP POSTãªã¯ãšã¹ãããã¶ãã§ãçæãããä»åã®å Žåãçæã«ã¯äžèšãã©ã¡ãŒã¿ãå¿ èŠ
- 
code ã¢ããªã±ãŒã·ã§ã³ã«æž¡ãããèªå¯ã³ãŒã 
- 
redirect_uri ãªãã€ã¬ã¯ãURIããããããç»é²ããããèªå¯ãšã³ããã€ã³ããžã®æåã®ãªã¯ãšã¹ãæã«æå®ããå Žæ 
- 
grant_type ã°ã©ã³ãšã¿ã€ããauthorization_codeãšããå€ãæå®ãããèªå¯ã³ãŒããã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æããããšã瀺ãã 
ãã®HTTP POSTãªã¯ãšã¹ãã¯ã¢ããªã±ãŒã·ã§ã³çrïŒæã«äžããããclient_idãšclient_secretã«ããèªèšŒãåããªããã°ãªããªããOAuth2.0ã®ä»æ§ã«ã¯ããªã¯ãšã¹ããèªèšŒããæ¹æ³ãäž»ã«ïŒçš®é¡å®çŸ©ãããŠããã Authorizationãããã«ããHTTP BasicèªèšŒ(client_idããŠãŒã¶åãclient_secretããã¹ã¯ãŒã)ãå©çšããæ¹æ³ãšclient_idãšclient_secretãHTTP POSTãã©ã¡ãŒã¿ã«è¿œå ããæ¹æ³
Authorizationãããã®å Žå㯠Authorization: Basic MDAwMDAwMDA0NzU1REU0MzpVRWhrTDRzTmVOOFlhbG50UHhnUjhaTWtpVU1nWWlJNg
HTTP POSTãã©ã¡ãŒã¿ã®å Žåã¯codeãstateãšäžç·ã«äžèšãã©ã¡ãŒã¿ãå¿ èŠ
- 
client_id ã¯ã©ã€ã¢ã³ãIDãã¢ããªã±ãŒã·ã§ã³ç»é²æã«å²ãåœãŠãããID 
- 
client_secret ã¯ã©ã€ã³ãã·ãŒã¯ã¬ãããã¢ããªã±ãŒã·ã§ã³ç»é²æã«å²ãåœãŠãããç§å¯ã®æååã 
ãªã¯ãšã¹ãã®èªèšŒãçµããããã©ã¡ãŒã¿ãé©åãªå Žåã¯ãèªå¯ãµãŒãããã®ã¬ã¹ãã³ã¹ãšããŠOAuthã¢ã¯ã»ã¹ããŒã¯ã³ãçãjsonã§è¿ãã
- 
access_token APIãªã¯ãšã¹ããèªå¯ãããšãã«äœ¿çšããããŒã¯ã³ 
- 
token_type çºè¡ãããã¢ã¯ã»ã¹ããŒã¯ã³ã®çš®é¡ã倧äœãbearerã 
- 
expires_in 
ã¢ã¯ã»ã¹ããŒã¯ã³ã®æå¹æéã®æ®ãç§æ°
- refresh_token ãªãã¬ãã·ã¥ããŒã¯ã³ãçŸåšã®ã¢ã¯ã»ã¹ããŒã¯ã³ãæ»ãã éã«æ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããã«äœ¿ãããŒã¯ã³
OAuth2.0ã§ã¯éåžžãã¢ã©ãŒããŒã¯ã³ã䜿ãããããä¿è·ãããAPIãµãŒãã¹ãã»ãã¥ãªãã£äžå±éºã«ãªããšãã¯ã©ã€ã¢ã³ãããåãåã£ãã¢ã¯ã»ã¹ããŒã¯ã³ãæ»æè ã«ãããããããšã«ãªããããªããOAuthã§ã¯ãè€æ°ã®ç°ãªãAPIã«å¯Ÿããã¢ã¯ã»ã¹ãã¢ããªã±ãŒã·ã§ã³ã«äžããå ŽåãèããããããããªããšïŒã€ã®ãµãŒãã¹ãå±éºã«ãªã£ãå Žåã«ä»ã®ãµãŒãã¹ã圱é¿ãåããå¯èœæ§ããããæå¹æéãçãã¢ã¯ã»ã¹ããŒã¯ã³ã ããAPiãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ãããããªã£ãŠããã°ãæ»æãããéã®åœ±é¿ç¯å²ãçããããšãã§ããã
APIãµãŒãã¹ã¯ã¯ã©ã€ã¢ã³ãããã¢ã¯ã»ã¹ããŒã¯ã³ãåãåã£ãæã«ãèŠæ±ããã¢ã¯ã»ã¹ã«å¯ŸããŠãæ£ããããŒã¯ã³ãã©ãã確èªããå¿ èŠããããåãåã£ãããŒã¯ã³ãèªåã§æ€èšŒã§ããªãå Žåã¯APIãµãŒãã¹ã®OAuthèªèšŒãµãŒãã¹å éšãžã®ãªã¯ãšã¹ããè¡ãããããŒã¿ããŒã¹ãåç §ãããŒã¯ã³ã®æå¹æ§ã倿ãããããã ãããã«ãã£ãŠAPIãªã¯ãšã¹ãã«å¯Ÿãé å»¶ãçºçããå¯èœæ§ãããã®ã§ãOAuthã®ä»£ããã«ã¢ã¯ã»ã¹ããŒã¯ã³ãšããŠçœ²åä»ãæååãæå·åæååã䜿ããããã€ããããã
ãã¢ã©ãŒããŒã¯ã³ã䜿ãããŠããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ããã®APIãªã¯ãšã¹ããèªå¯æžã¿ã§ããããšã瀺ãéã«ããªã¯ãšã¹ãã«ã¢ã¯ã»ã¹ããŒã¯ã³ãå«ããã ãã§ãªãã±ãŒãããžã¿ã«çœ²åã¯èŠããªãã (ã¢ã¯ã»ã¹ããŒã¯ã³ã®éä»ã¯ãã£ã±ãAuthorizationããããããã)
ããŒã¯ã³ã®ãšã³ããã€ã³ãã«å¯Ÿã grant_typeãšããŠrefresh_tokenãæå®ããrefresh_tokeããä»å ããHTTP POSTãå®ããããã®ãªã¯ãšã¹ãã«å¯ŸããŠãèªèšŒã¯å¿ èŠ
ã¢ã«ãŠã³ãã®ç®¡çã€ã³ã¿ãŒãã§ãŒã¹ã§æç€ºçã«ã¢ã¯ã»ã¹åãæ¶ããæå®ããŠããããæ¹æ³ãäžè¬çãFacebookãšãã¯ãã¹ã¯ãŒãããŠãŒã¶ã倿Žãããå³ç¡å¹ã«ãªããããã googleãšãã¯ãªãã¬ãã·ã¥ããŒã¯ã³ãšãã®åãæ¶ãçšã®ããã°ã©ã ãçšæããŠããŠããããå©ããšç¡å¹ã«ã§ããã
ãã°æ¬OAuthã«ã€ããŠ(第äžç« )
ãŠãŒã¶ãèªå¯èŠæ±ãæ¿èªãããšãå³åº§ã«ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŒã¯ã³ãè¿ãããã
- 
äžæçãªã¢ã¯ã»ã¹ã®ã¿ 
- 
ãŠãŒã¶ãæ¥åžžçã«APIãããã€ãã«ãã°ã€ã³ããŠããæ 
- 
OAuthã¯ã©ã€ã¢ã³ãããã©ãŠã¶ã§å®è¡ãããŠããæ(JSãšãFlashãšã) 
- 
ã¶ããå 察ããä¿¡çšåºŠãé«ããã¢ã¯ã»ã¹ããŒã¯ã³ãä¿¡é Œåºæ¥ãªããŠãŒã¶ãã¢ããªã±ãŒã·ã§ã³ã«æµåºããæéãéå®ãããŠããæ 
ãã®ãããŒã§ã¯ãªãã¬ãã·ã¥ããŒã¯ã³ã¯äœ¿ãããªããèªå¯ãµãŒããã¢ã¯ã»ã¹ããŒã¯ã³ã®æéãçãèšå®ããŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯éœåºŠéœåºŠèªå¯ãããŒã宿œããªããã°ãªããªãã ãããã€ãã®äžã«ã¯éå»ã«åãã¹ã³ãŒããæ¿èªããããšãããã°ãæ¿èªç»é¢ã衚瀺ããªããããã€ããããã
ã¢ããªã±ãŒã·ã§ã³ãæå¹æéã®é·ããªãã¬ãã·ã¥ããŒã¯ã³ããµãŒãã«ä¿åããããšããªãã®ã§ããµãŒãã«äŸµå ¥ãããŠããªã¹ã¯ãéå®çããŸããã¯ã©ã€ã¢ã³ãã®ã¢ã¯ã»ã¹ããŒã¯ã³ãæŽæ°ããã«ã¯APiãããã€ãã®èªå¯ãµãŒãã«ãŠãŠãŒã¶èªèšŒãåããå¿ èŠãããã®ã§ãã¢ã¯ã»ã¹ããŒã¯ã³ãæµåºããéã«OAuhtå®è£ ã«å¿ããæå¹æéã§å€±å¹ããããšãä¿èšŒãããŠããã ãã ãã¢ã¯ã»ã¹ããŒã¯ã³ããŠãŒã¶ã®webãã©ãŠã¶ã«çŽæ¥éãããã®ã§ãèªå¯ã³ãŒããããŒã«æ¯ã¹ã¢ã«ãŠã³ã¿ããªãã£ã®é¢ã§å£ãããŸãããµãŒãããŒãã£ã®ã¢ããªã±ãŒã·ã§ã³ããã£ãŠçæãããããã¿èŠããŠããAPIåŒã³åºããå®éã¯ãªãœãŒã¹ææè ã«ãã£ãŠçŽæ¥çæãããå¯èœæ§ãããã
ãŠãŒã¶ãšã¯ã¹ããªãšã³ã¹ã¯ãµãŒããµã€ãã¢ããªã±ãŒã·ã§ã³ãšå šãåã
ã€ã³ããªã·ããã°ã©ã³ããããŒã§ããµãŒããµã€ãwebã¢ããªã±ãŒã·ã§ã³ãšåæ§ã®ãããŒ
ãã°æ¬OAuth2ã«ã€ããŠ(第åç« )
ãŠãŒã¶åãšãã¹ã¯ãŒããã¢ã¯ã»ã¹ããŒã¯ã³/ãªãã¬ãã·ã¥ããŒã¯ã³(ãªãã·ã§ã³)ãšäº€æããŠäœ¿ããã»ãã¥ãªãã£äžãã®ãããŒã¯ä»ã®OAuthãããŒãšã¯ç°ãªãæ§è³ªãæã€ã倧ããªéãã¯ãã¢ããªã±ãŒã·ã§ã³ãããŠãŒã¶ã®ãã¹ã¯ãŒãã«ã¢ã¯ã»ã¹ã§ãããšããããšããã®ããããã®ãããŒã§ã¯ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããä¿¡é Œãå¿ èŠã
APIãããã€ããèªç€Ÿã§ãªãªãŒã¹ãããªãã£ã·ã£ã«ã¢ããªå ã®ã¿ã§äœ¿ãããšãæšå¥šãããŠãããéåžžã¯ãµãŒãããŒãã£ã§ã®äœ¿çšã¯èªããããŠããªãã
ã¢ããªã±ãŒã·ã§ã³ãããªãœãŒã¹ææè ã®ãã¹ã¯ãŒãã«ã¢ã¯ã»ã¹ã¯ã§ãããããŠãŒã¶åãšãã¹ã¯ãŒããçŽæ¥äœ¿ã£ãŠ(HTTP BasicèªèšŒãªã©)APIåŒã³åºããè¡ãããã¯ããã®ãããŒã䜿ã£ãã»ããå€å°ã¯ã»ãã¥ãªãã£äžåªããŠãããBasicãèªèšŒã®å Žåã¯APIãåŒã³åºããã³ã«ãã¢ããªã±ãŒã·ã§ã³ãæ¯åãŠãŒã¶ã®ãã¹ã¯ãŒãã«ã¢ã¯ã»ã¹ããå¿ èŠããããïŒã€ã®ã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ããŒã¿ãã¢ã¯ã»ã¹ãåãæ¶ãããå Žåããã¹ã¯ãŒãã倿ŽããŠä»ã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«æ°ãããã¹ã¯ãŒããèšå®ããªããã°ãªããªãã ãªãœãŒã¹ææè ãã¹ã¯ãŒãã¯ã¬ãã³ã·ã£ã«ãããŒã䜿ãã°ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ã¯ã¬ãã³ã·ã£ã«ã«ã¢ã¯ã»ã¹ããã®ã¯äžåºŠã ãã§ååã§ããã®ïŒåã§ã¢ã¯ã»ã¹ããŒã¯ã³ã«äº€æãããã®ã§ã¯ã¬ãã³ã·ã£ã«ãã¢ããªã±ãŒã·ã§ã³ãªãã§ä¿åããå¿ èŠããªãã
ãã®ãããŒã¯ãã¹ã¯ãŒãã䜿ã£ãã¢ã¯ã»ã¹èŠæ±æ¹æ³ãšåããã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶åãšãã¹ã¯ãŒããèŠæ±ãããŠãŒã¶ãå ¥åãæ¬¡ã«ã¢ããªã±ãŒã·ã§ã³ããµãŒããµã€ããŸãã¯ã¯ã©ã€ã¢ã³ããµã€ãã§APIãããã€ãã®èªå¯ãµãŒãã«å¯Ÿãããªã¯ãšã¹ããçæã
ãã°æ¬OAuth2ã«ã€ããŠ(第äºç« )
ã¯ã©ã€ã¢ã³ãèªèº«ãããŒã¿ãææããŠããŠããªãœãŒã¹ææè ããã®ã¢ã¯ã»ã¹è²æž¡ãäžèŠãªå Žåã«äœ¿ããããã㌠ãã®ãããŒã¯OAuht1.0ã®2-leggedãããŒãšåããããªäºäŸã«é©åãããããŒã
ãªãœãŒã¹ææè ãã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠéåžžOAuthãããŒä»¥å€ã®ææ®µã§èªåã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹æš©éãäžããŠããå Žåã
ãã¯ã©ã€ã¢ã³ããèªå¯ãµãŒãã«ãã£ãŠé©åã«èªèšŒã§ãããšãããèªèšŒã¯ã¬ãã³ã·ã£ã«ã®æ©å¯æ§ãå®ãããŠããããšãã®ïŒç¹ãéèŠãã¯ã©ã€ã¢ã³ããèªèšŒãåããã«ã¯ãèªå¯ãµãŒãã«client_idãšclient_secretãéãã°ããããã¢ã¯ã»ã¹ããŒã¯ã³èŠæ±æã«POSTãã©ã¡ãŒã¿ãšããŠéãæ¹æ³ãšHTTP BasicèªèšŒã®Authenticationãããã䜿ã£ãŠéãæ¹æ³ãããããã®ä»ã«ã å ¬ééµ/ç§å¯éµã®ãã¢ãäœ¿ãæ¹æ³ãSSL/TLSã¯ã©ã€ã¢ã³ãèªèšŒã«ããæ¹æ³ãªã©ãããã
ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ãããŒã§ã¯äžçµã®ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ã§å€§éã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ãããäžçµã®ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ããã¢ã¯ã»ã¹ã§ããããŒã¿éã倧ãããªãã»ã©ãæŒæŽ©ã®ãªã¹ã¯ã¯é«ãŸãããªã®ã§ãã¯ã©ã€ã¢ã³ãã®èªèšŒçšã®ã¯ã¬ãã³ã·ã£ã«ã¯æŒæŽ©ããªãããã«ç®¡çããããšãéèŠã
ex.facebookã®App Loginæ©èœ
ã¹ãããïŒ ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã¬ãã³ã·ã£ã«ãã¢ã¯ã»ã¹ããŒã¯ã³ãžäº€æ
ã¢ããªã±ãŒã·ã§ã³ããèªå¯ãµãŒããžã¢ã¯ã»ã¹ããŒã¯ã³ãªã¯ãšã¹ããéãããã®ãªã¯ãšã¹ãã«ã¯ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ã«ããèªèšŒãå¿ èŠã POSTãã©ã¡ãŒã¿ã«å¿ èŠãªãã®
- 
grant_type client_credentialsãæå® 
- 
client_id ã¢ããªã±ãŒã·ã§ã³ãç»é²ããæã«å²ãåœãŠãããå€ 
- 
cliet_secret ã¢ããªã±ãŒã·ã§ã³ç»é²æã«å²ãåœãŠãããå€ 
ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ã«ããèªèšŒãçµãããšãã¯ã©ã€ã¢ã³ãã«ã¢ã¯ã»ã¹ããŒã¯ã³ãè¿ããããFacebookã§ã¯ãaccess_tokenãURLãšã³ã³ãŒããããã¬ã¹ãã³ã¹ããã£ã«å«ãŸãã圢ã§è¿ãããã
ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ãããŒã§çºè¡ãããOAuthã¢ã¯ã»ã¹ããŒã¯ã³ã¯ããã®ä»ã®ãããŒã§çºè¡ããããã®ãšåããªã®ã§ãäœ¿çšæ¹æ³ãåããAPIã®ãããã€ãã®ãµããŒãç¶æ³ã«ããããŠãHTTP AuthoraizationãããããŸãã¯ã¯ãšãªãã©ã¡ãŒã¿ã®å€ãšããŠã¢ã¯ã»ã¹ããŒã¯ã³ãæž¡ãã
ã¯ã©ã€ã¢ã³ãã¯ã¬ãã³ã·ã£ã«ã§ã¯ãæå¹æéã®é·ãã¢ã¯ã»ã¹ããŒã¯ã³ãçºè¡ãããã仿§ã§ã¯ãªãã¬ãã·ã¥ããŒã¯ã³ã®çºè¡ã¯ãµããŒããããŠããªããªã®ã§ãæå¹æéãåããå Žåã¯æ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãèŠæ±ãçŽãã