ç°¡åãªçŽ¹ä»
çŸæç¹ã§ã¯ãç§ã¯ã Kohana phpãã¬ãŒã ã¯ãŒã¯ã®ã³ãã¥ããã£ã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ã®èŠçŽ ã䜿çšããŠãäžçš®ã®æ å ±ããŒã¿ã«ãšåç §ããŒã¿ã«ãäœæããããšã決å®ããæ奜家ããŒã ã®éçºè ã®1人ã§ãã ã³ã¡ã³ã/ã¬ãã¥ãŒãæžããããæ祚ãè©äŸ¡ã«åå ãããããã«ã¯ãèªèšŒãå¿ èŠã§ãã OpenID / OAuthã䜿çšããŠå ¥åãåºå®ããã®ã¯ç°¡åã§ããèãå§ãããšèå³æ·±ããã®ã衚瀺ãããŸãã次ã¯äœã§ããïŒ
ååãšããŠãçè«çç 究ã«çŠç¹ãåœãŠãããšãäºåã«èŠåãã䟡å€ããããŸãã 説æããã¡ã«ããºã ã®æºåãã§ã次第ãããã¯æ¥ããããããšã§ã¯ãããŸããããããã«ç€ºããŸãã
èªèšŒ
ããŒã¿ããŒã¹
ãµã³ãã«ããŒã¿ããŒã¹ããŒãã«ã®æŠèŠã説æããŸããããã«ããããŠãŒã¶ãŒããååŸã§ããæ å ±ã®æ倧éãä¿åã§ããŸãã
ãŠãŒã¶ãŒ
ããã§ã¯ãã¹ãŠãæ確ã§ããããã¯ãŠãŒã¶ãŒãä¿åããããã®ã¡ã€ã³ããŒãã«ã§ãã
-
id
ãŠãŒã¶ãŒid
èªåã€ã³ã¯ãªã¡ã³ãã ä»ã®ãµã€ããªããžã§ã¯ããšã®éä¿¡ã«ãã®èå¥åã䜿çšããäºå®ã§ãã -
username
-ãµã€ãã«è¡šç€ºããã衚瀺åã æåã«ãOpenIDãŸãã¯OAuthããŒã¿ã«åºã¥ããŠçæããŸãããå€æŽããæ©äŒã確å®ã«äžããå¿ èŠããããŸãã -
email
-ã¡ãŒã«ã¢ãã¬ã¹ã æåã¯ã䜿çšãããŠããå€éšã¢ã«ãŠã³ãããåŒãåºããããšããŠããŸãã ããã¯åžžã«å¯èœãšã¯éããªãããããã£ãŒã«ãã¯ãªãã·ã§ã³ã§ãã
auth_data
ãã®ããŒãã«ã¯ãå€éšãŠãŒã¶ãŒã¢ã«ãŠã³ããæäœããããã®ãã®ã§ãã ããšãã°ããŠãŒã¶ãŒAãGoogleãšTwitterã«1ã€ã®ã¢ã«ãŠã³ããæã£ãŠããå Žåã1ã€ã®ãŠãŒã¶ãŒãšã³ããªã®auth_dataã«2ã€ãæäŸããå¿ èŠããããŸãã
-
id
äžè¬ã«ããã¹ãŠãæ確ã§ãã åæèªåã€ã³ã¯ãªã¡ã³ãããŒã -
service_name
ã¯ããã°ã€ã³ã«äœ¿çšããããããã€ããŒã®ååã§ãã èªèšŒã¡ã«ããºã ãšãµãŒãã¹ã®å®éã®ååã§æ§æããå¿ èŠããããŸãã ããšãã°ãlivejournalã¢ã«ãŠã³ãã§OpenIDãä»ããŠãã°ã€ã³ããå Žåããopenid.livejournalããååŸãããoauth2.githubãã¯githubã¢ã«ãŠã³ããæå³ããOAuth v2ããã¢ã¯ã»ã¹ã§ããŸãã -
service_id
äžèšã®ãµãŒãã¹ã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãèå¥åã ã€ãŸã ãã°ã€ã³ããŸããservice_name
ãšservice_name
äžæã®ã€ã³ããã¯ã¹ãååŸããŸãããµã€ãã«ã¯ãã®ãããªãŠãŒã¶ãŒããã以äžããªãã¯ãã§ãã -
email
-åã³ç³é¹žïŒ ãã®ãŠãŒã¶ãŒãå€æŽããããšã¯ã§ããŸããããŸããéè€ãããŠãŒã¶ãŒãæ€çŽ¢ãããã人éã®ãã°ã€ã³ãçæããããããªã©ãæ±ãç®çã§äœ¿çšããããšãã§ããŸãã -
some_data
ããã§ã¯ããããã€ããŒããåä¿¡ããä»ã®ãã¹ãŠïŒã·ãªã¢ã«åããã圢åŒïŒãsome_data
ããŸãã 䟿å©ã«ãªã£ããã©ãããŸããïŒ ãã¡ããããã£ãŒã«ãã¯æšãŠãããšãã§ããŸããããã¯thçŽå®¶ã§ãããå æ°ãªææè ã®ã¹ã³ããã ã®ããã§ã;ïŒ
ã³ãã¥ãã±ãŒã·ã§ã³ãº
åœç¶ãã¢ã«ãŠã³ãã¯ç¹å®ã®ãŠãŒã¶ãŒã«ãªã³ã¯ããå¿ èŠãããããã user_idå€éšããŒãauth_dataããŒãã«ã«è¡šç€ºãããŸãã
å¥åŠãªããšã«ããŠãŒã¶ãŒãã¢ã«ãŠã³ãã«ãã€ã³ãããããã«ã ãŠãŒã¶ãŒããŒãã«ã«
auth_id
å€éšããŒãè¿œå ããŸãã ãªãã§ïŒ ãããã£ãŠãç¹å®ã®ãã©ã€ããªã¢ã«ãŠã³ãã匷調衚瀺ããŸãã ããšãã°ãäžéšã®ããŒã¿ãèªåçã«ãŠãŒã¶ãŒãããã¡ã€ã«ã«è»¢éããããèªåãã°ã€ã³ãå®è£ ãããããŸãã 決å®ã¯è°è«ã®äœå°ãããããã«èŠãããããããŸããããçŸæç¹ã§ã¯åççãã€æçšã§ãããšèããŠããŸãã
æªéãå ¥ããŠããïŒ
ãããŠä»-èªèšŒã¡ã«ããºã èªäœã æé ã
- ãEnter throughããã¿ã³ãã¯ãªãã¯ããããOpenIDãå ¥åããããåã«ãããã€ããŒã®åçãã¯ãªãã¯ããŸããã ããªããããªãã§ããããšããããã€ããŒã«ç¢ºèª/蚌æããŸããã
- ãããã€ããŒãããµã€ãã«è¿éãããåŸãããŒã¿ããŒã¹ã§ãã®ãŠãŒã¶ãŒã®å¯çšæ§ã確èªããå¿
èŠããããŸãã ãã§ã«å
¥ã£ãŠããå Žåã¯ã©ãããŸããïŒ ãããè¡ãã«ã¯ãäžèšã®çµã¿åãã
service_id
+service_name
䜿çšãservice_name
ã ã¢ã«ãŠã³ããèŠã€ãã£ãå Žåããã¹ãŠãç°¡åã§ãuser_id
ã§ãŠãŒã¶ãŒãæœåºããå®è¡ãuser_id
ã - ãã ãã以åã¯ã¢ã«ãŠã³ãããµã€ãã®ç¯å²ã«å«ãŸããŠããªãã£ããããæ°ãå€ããåã«ãã°ããç»é²ããŠã¿ãŸãããã
auth_dataã«ã¯ ããããã€ããŒãæäŸãããã¹ãŠãå ¥åããŸãã ãã®ããŒã¿ã«åºã¥ããŠãusername
ãçæããããšãusername
ãŸãã æ°ãããŠãŒã¶ãŒãä¿åãã ãã©ã€ããªãšããŠäœ¿çšããã¢ã«ãŠã³ããæå®ããŸãã ã»ããæ°ãããŠãŒã¶ãŒãããŸãïŒ
ããŠãè°è«ãããã®ã¯äœã§ããïŒ
ã«ãŒãã³ã«ã€ããŠç°¡åã«èª¬æããã®ã§ãããã°ã©ããŒã®è¿œå ã®åªåãå¿ èŠãªããŸããŸãªã±ãŒã¹ãèŠãŠã¿ãŸãããã
ç§ãèŠããŠïŒ
å€ãã®å Žåã以åã«ã©ã®ã¢ã«ãŠã³ãã§ãµã€ãã«ã¢ã¯ã»ã¹ããããèŠããã®ãé£ãããªããŸãã ãããŠããªãã圌ã¯ããããã£ãšå¿ èŠãšããŠããã®ããèŠããŠãããŠãã ããã ãããã£ãŠããã°ã€ã³ã«æåããåŸããŠãŒã¶ãŒã次åèªåçã«ãã°ã€ã³ã§ããããã«ãããŒã¯ã³ä»ãã®Cookieãã¹ããŒããŸãã
ããã¯å®å šã§ã¯ãªãããšããªãã¯èšããããªãã¯ããããæ£ããã§ãããã ãããã£ãŠãããŒã¯ã³ãçæãããšãã«ãã¯ã©ã€ã¢ã³ãã«é¢ããããŸããŸãªæ å ±ïŒIPããŠãŒã¶ãŒãšãŒãžã§ã³ããªã©-éžæè¢ããããŸãïŒãä¿åããŸãã ãŠãŒã¶ãŒãïŒãexitããã¿ã³ã䜿çšããŠïŒæ瀺çã«ãµã€ããé¢ãããšãCookieãåé€ãããŸãã ããŠãèªåãã°ã€ã³ã§ã¯ããŠãŒã¶ãŒãéèŠãªããŒã¿ãå€æŽããïŒç³é¹žãŸãã¯ãã°ã€ã³ãå€æŽããïŒå Žåã«ç¢ºèªãå¿ èŠã«ãªããŸãã 極端ãªå Žåã¯ããç§ãèŠããŠããªãããã§ãã¯ããã¯ã¹ãæç»ã§ããŸãã
åœç¶ãOAuthã®å ŽåãAPIãµãŒãã¹ã䜿çšããã«ã¯ïŒã¢ã«ãŠã³ãã«ãã€ãŒããéä¿¡ãããªã©ïŒäœæ¥ããŒã¯ã³ãå¿ èŠã§ãããã®ããããèšæ¶ãããŸã£ãã䜿çšããªãããé©åãªã¿ã€ãã³ã°ã§ãããã€ããŒã«éä¿¡ããŠç¢ºèªããå¿ èŠããããŸãã
èŠããŠãïŒ ããïŒ èŠããŠïŒ
ãŠãŒã¶ãŒããã°ã¢ãŠã
æ»ã£ãŠããã ãããŠããã®é·æã«ãããã¯ãããŒã¯ç§ãã¡ãå©ããŸãã ããã«åºã¥ããŠããGoogleã䜿ããŸãããããã£ïŒããªã©ã®ã¡ãã»ãŒãžããŠãŒã¶ãŒã«è¡šç€ºããŸãã åœç¶ãå¥ã®ã¢ã«ãŠã³ããåžæããå Žåã¯ãCookieãæ°ããã¢ã«ãŠã³ãã«å€æŽããŸãã çµå±ãç§ãã¡ã¯ãã ã®ãµã€ãã§ãããæ°ã«ããŸããã
å¥ã®ã¢ã«ãŠã³ããããµã€ã³ã€ã³ãã
ãããå¥ã®ã¢ã«ãŠã³ãã§ãããªãã¯èšããŸãïŒ ã§ã¯ããŠãŒã¶ãŒãè€è£œããŸããïŒ çµæ§ã§ãã ç§ãã¡ã¯ãããšæŠããªããã°ãªãããããããããã«ããããåªåãããŸãã
ãŸããCookieã®å¯¿åœã確èªããŸãã 圌女ã¯ãã¹ãŠããããã§ã¯ãªãããšããããŠæœåšçã«ç§ãã¡ã2çªç®ã®ã¢ã«ãŠã³ããäœæããŠããããšãæããŠãã ããã ãããã£ãŠããããå¥ã®ã¢ã«ãŠã³ãã§ãããããŸã ååšãããããŠãŒã¶ãŒã«å°ããŸãã å¥ã®å Žåã¯ãCookieããã®ä»ã®æ å ±ãäºåã«ã¯ãªãŒãã³ã°ããåŸããã€ã¬ãŒãžããŒãã®æ°ããã¬ã³ãŒããäœæããŸãã
ãããããŠãŒã¶ãŒãããããŸã 圌ã§ãããšäž»åŒµããå Žåãäœããã®çç±ã§ç§ãã¡ã®ããã«ç°åžžãªæ¹æ³ã§å ¥åãããïŒç§ãã¡ã¯ãããèŠããŠããauth_dataã«ãã¹ãŠã®ãã®ããããŸãïŒãããªãã¯ãã§ãã¯ãããå¿ èŠããããŸãã ãªããã³ãã«ã¯ãããã€ãã®ãªãã·ã§ã³ããããŸã-å ã®ã¢ã«ãŠã³ãã§ãã°ã€ã³ããããšãææ¡ããïŒã€ãŸãã ãã©ã€ããªã§ -ãããæå®ãããã1ã€ã®çç±ã§ãïŒããŸãã¯ã¡ãŒã«ã«ç¢ºèªã³ãŒããéä¿¡ããŸãïŒãŠãŒã¶ãŒãããã¡ã€ã«ã§æå®ãããŠããå ŽåïŒã æ£åŒã«ã¯ã primaryã®äžã«ãšã³ããªãå¿ èŠãšããªãå ŽåããããŸãããã§ã«ç¢ºèªãããŠãããã®ã¯ã©ãã§ãååã§ã-ãåžæã®ãšããã
ãŠãŒã¶ãŒãèªåã®æš©å©ã確èªã§ããªãã£ãå Žåãæ°ããäœæãããã¢ã«ãŠã³ããåé€ããŸããåãã€ãããšã¯ãããŸããã
ã¡ãŒã«ãèŠãŠãã ããïŒ
å®éãã¡ãŒã«ã¢ãã¬ã¹ã¯ãŠãŒã¶ãŒèå¥åãšããŠå®å šã«äœ¿çšã§ããŸãã ãããã£ãŠãCookieãèŠã€ãããªããŠãããããã€ããŒã䜿ãæ £ãã
email
ãè¿ããå Žåã§ãããã¹ïŒã¢ã«ãŠã³ãã®ããŒãžãŸãã¯æ°ãããã¹ïŒãéžæããŠåããã€ã¢ãã°ãæäŸããŸãã ãããããã¯ãã¹ãŠã®ã¢ã«ãŠã³ããç³é¹žãäžããããã§ã¯ãªãã®ã¯æ®å¿µã§ã...
ããªãã®æã®äžã®æïŒ
ãŠãŒã¶ãŒãã¢ã«ãŠã³ããæ··åãããŸã§åŸ ã€ã®ã¯ãªãã§ããïŒ åœŒããŸã ãããŒããããæã£ãŠããããšã圌ã«ææãããŠãã ããã ãããã¡ã€ã«ã«ã¯ïŒ ãã©ã€ããªã¢ã«ãŠã³ãã®äžã®ã¿ïŒïŒãèªåã®ã¢ã«ãŠã³ãããšèŠãªããã¢ã«ãŠã³ããè¿œå ããæ©èœããããŸãã ãããŠãããªãã¯å¥åŠãªè³ªåã§äººãå°ãããå¿ èŠã¯ãããŸããã
Githubã«ã€ããŠ
Github ã OAuth v2ããµããŒãããŠããããšããåç¥ã§ããïŒ ãããŠã圌ã¯ããããããšãã§ããŸãã ç§ãã¡ã®ãããžã§ã¯ãã«ãšã£ãŠããã®ãµãŒãã¹ã¯ç¹å¥ã§ããããªãã¯ææã®äººãšèšãããšãã§ããŸãã ãŠãŒã¶ãŒãGithubçµç±ã§ãã°ã€ã³ãããšããã«ãè¿œå ã®ãªããããã«éå§ããŸãã
- ããã«ã€ããŠã¯è©±ããŸããã§ãããã usersããŒãã«ã«ã¯
developer_id
ãã£ãŒã«ããæ ŒçŽdeveloper_id
ãŸãã ããã¯ã developersããŒãã«ïŒããã«ã¡ã¯ãCapïŒïŒã«ãªã³ã¯ããããã®éµã§ããããã«ã¯ãAPIãéããŠGithubããæž¡ãããéçºè ãæ ŒçŽãããŠããŸãã å®éã Kohanaçšã«éçºãããã¢ãžã¥ãŒã«ïŒããã¯ãããžã§ã¯ãã®äž»ãªã¿ã¹ã¯ã®1ã€ã§ãïŒãåéããããã蚪åè ã®1人ãããã€ãã®ã¢ãžã¥ãŒã«ã®äœæè ã§ããããšãç¥ãããšã¯éåžžã«äŸ¿å©ã§ãã - ãŠãŒã¶ãŒããè¿œå æ å ±ãåéããå¿ èŠã¯ãããŸããã ãŸãããŠãŒã¶ãŒãããã°ã©ããŒã§ããå Žåããã®æ å ±ã¯ããã«åœ¹ç«ã¡ãŸãïŒkhe-kheïŒã ç»é²ãæåããåŸãGithubberã«åœŒã®èè ã®Nåã®ã¢ãžã¥ãŒã«ãããããšãæãåºãããŸãã圌ã¯ããã€ãã®ããŒã¿ïŒäºææ§ãããŒãžã§ã³ã説æãªã©ïŒãç·šéã§ããŸãã ãããã èªåã§åŠçã§ããŸãã ããã§ããéçºè ã«èè ã®æ°ããã¢ãžã¥ãŒã«ã®è¿œå ã«é¢ããéç¥ãã¡ãŒã«ã§éä¿¡ããŸãïŒéç¥ããªãã«ãããªãã·ã§ã³ãå®è¡ããŸãïŒã
ç§ã¯äœã«ã€ããŠè©±ããŠããã®ã§ããïŒ
åœç¶ãå€ãã®èœãšãç©ŽããããŸãã ç§ã¯ããµã€ã蚪åè ã®åŽããã説æãããã¢ã«ãŽãªãºã ãšèµ·ããåŸãééã/çç¥ã«ã€ããŠäºåã«è°è«ããããšæããŸãïŒãã®ã¹ããŒã ã¯ã©ãã»ã©äŸ¿å©ã§ãããææ¡ããããŸããããŸãã¯ãã®ãããªãµã€ãã§ã¯åžžã«äœããããªããæ©ãŸããŠããŸããïŒïŒããããŠéçºè ã®èŠ³ç¹ãã暪æ ããããããããŸããïŒã å®éãHabréã«é¢ããèšäºãžã®ã³ã¡ã³ãã«ã¯ãèšäºèªäœãããã¯ããã«æçšãªæ å ±ãå«ãŸããŠããããšããããããŸãã