ããéã®ããã¢ããŒãã®éµãæã£ãŠããã®ã§ã¯ãªãã§ããããïŒã -ãã®ãããªããšã¯ãå€éšãµãŒãã¹ãã¡ã€ã³ã¡ãŒã«ã®ãã¹ã¯ãŒããå¿ èŠãšãã人ã®éåžžã®åå¿ã®ããã«èŠããŸãã ãã ããç§ãã¡ã®ã»ãšãã©ã¯ãå®æçã«ãµãŒãããŒãã£ã®ãµãŒãã¹ã«ãã¹ã¯ãŒããæäŸããå¿ èŠããããŸãã ä»æ¥ã¯ãOAuth 2.0ã䜿çšããŠã¡ãŒã«ããã¯ã¹ããã¬ã¿ãŒãåéããéã®èªèšŒæé ã®å®è£ æ¹æ³ã«ã€ããŠèª¬æããŸããããã«ãããMail.RuãŠãŒã¶ãŒã¯ãã¡ãŒã«ãã第äžè ãžã®ãããŒããä¿¡é Œããå¿ èŠããªããªããŸãã
éåžžãã¡ãŒã«ã³ã¬ã¯ã¿ãŒãã¡ãŒã«ã¯ã©ã€ã¢ã³ãããŸãã¯ãµãŒãããŒãã£ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãèšå®ãããšãã¯ãååãã¡ãŒã«ããã¯ã¹ã¢ãã¬ã¹ãããã³ãã¹ã¯ãŒããå ¥åããå¿ èŠããããŸãã ãã®æé ã§æãäžå¿«ãªã®ã¯ããã¹ã¯ãŒãã®å ¥åã§ãã ã»ãã¥ãªãã£ã«é¢å¿ãããå Žåã¯ããã®ã¡ãŒã«ããã¯ã¹ã«ç¹å¥ãªè€éãªãã¹ã¯ãŒããèãåºãããµãŒãã¹Webãµã€ãã§ã®ã¿å ¥åããŸããã ãããŠããã¹ã¯ãŒãã第äžè ã«ä¿¡é Œããå¿ èŠããããŸãã第äžè ã¯ãã®ãã¹ã¯ãŒããä¿åãããããã¯ãŒã¯çµç±ã§éä¿¡ããŸãã 転éãããã»ã©æªããªãå ŽåïŒMail.Ru Mailã¯IMAPãããã³ã«ã®SSLããŒã¿è»¢éããµããŒãããŠããŸãïŒããã¹ã¯ãŒãã®ä¿åã¯å±éºã§ãã ãã¹ã¯ãŒãã¯ã©ã®ãããªåœ¢åŒã§ä¿åãããŸããïŒ åœŒãã¯ãããçãããšãã§ããŸããïŒ éšå€è ãã¡ãŒã«ãèªãããšã¯ã§ããŸããïŒ ãŸããã¡ãŒã«ã«ã¢ã¯ã»ã¹ããã®ã¯ãµãŒãããŒãã£ã®ãµãŒãã¹ã®ã¿ã§ããïŒ åœŒã¯ãã¯ã©ãŠããããã¡ã€ã«ã誀ã£ãŠåé€ããŸããïŒ ãŠãŒã¶ãŒã¯ããåæ§ã®è³ªåãããŸãã
ãµãŒãããŒãã£ã®ãªãœãŒã¹ãµãŒããŒã«ãã¹ã¯ãŒããä¿åããªãããã«ããããšãã§ããŸãã 解決çã¯æããã§ããIMAPãä»ããŠMail.Ruããä»ã®ã¡ãŒã«ãããã€ããŒã®ã¡ãŒã«ããã¯ã¹ã«ã¡ãŒã«ãåéãããšããããã³ã¡ãŒã«ã¯ã©ã€ã¢ã³ãããµãŒãããŒãã£ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãšããåããããšãã«ãOAuth 2.0ãä»ããŠäœæ¥ããæ©äŒãå šå¡ã«æäŸããŸãã ãããŠãç§ãã¡ã¯ãã®äžæ©ãèžã¿åºããŸããã ãããŠä»ããŸãæåã«ã
OAuthã®æŠèŠ
äžè¬çãªOAuthãšã¯äœã§ããïŒ å®å šãªãããã³ã«ä»æ§ã¯ã RFC 6749ã§èª¬æãããŠããŸã ã è€æ°ã®èªèšŒãªãã·ã§ã³ããããŸãã ããšãã°ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã¯ãWebã¢ããªã±ãŒã·ã§ã³ãããã€ã¹ãšã¯å°ãç°ãªãæ¹æ³ã§ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŸãã ãã¬ãŒã³ããŒã·ã§ã³ãç°¡åã«ããããã«ãWebã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ã±ãŒã¹ã«éå®ããŠããŸãã
OAuthã«ã¯ããã€ãã®åœ¹å²ããããŸãã
ãªãœãŒã¹ææè ã¯ãã¢ããªã±ãŒã·ã§ã³ãèªåã«ä»£ãã£ãŠã¢ã¯ã·ã§ã³ãå®è¡ã§ããããã«ãããŠãŒã¶ãŒã§ãã
ãªãœãŒã¹ãµãŒã㌠-ãªãœãŒã¹ææè ãææãããµãŒãã¹ãæäŸãããµãŒããŒïŒããšãã°ããªãœãŒã¹ãµãŒããŒã¯ãããã¯ã¹ãé 眮ãããŠããã¡ãŒã«ãµãŒããŒã«ããããšãã§ããŸãïŒã
æ¿èªãµãŒã㌠-OAuthãããã€ããŒã«ãã£ãŠæ¿èªããããµãŒããŒã æãåçŽãªã±ãŒã¹ã§ã¯ãå°ãªããšãå€éšã®èŠ³ç¹ããã¯ãæ¿èªãµãŒããŒãšãªãœãŒã¹ãµãŒããŒã¯ãŸã£ããåãã§ãã
ã¯ã©ã€ã¢ã³ã -OAuthçšèªã§ã¯ãããã¯ãŠãŒã¶ãŒãããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãååŸããWebã¢ããªã±ãŒã·ã§ã³ã§ãã åã¯ã©ã€ã¢ã³ãã¯èš±å¯ãµãŒããŒã«ç»é²ããå¿ èŠããããŸãã ããããããšã§ãclient_idãšclient_secretãåãåããŸãã å®éãããã¯OAuthãããã€ããŒãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãèå¥ããããã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã§ãã ãã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã®ãã¢ã¯ãèå¥ã®ããã«ã®ã¿äœ¿çšããããŠãŒã¶ãŒã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããšæ±ºããŠäžèŽããªãããšãéèŠã§ãã ãããã£ãŠããŠãŒã¶ãŒã¯ã©ã®ãããªç¶æ³ã§ããã¹ã¯ãŒãã第äžè ã«è»¢éããŸãããèš±å¯ãµãŒããŒãšã®ã¿ãã®ããŒã¿ã亀æããŸããã¡ãŒã«ããã¯ã¹ãå ¥åããã®ãšåããããå®å šã§ãã
ä»çµã¿
ãã®ãããç¹å®ã®ãµã€ãïŒOAuthãããã€ããŒïŒã®ãŠãŒã¶ãŒïŒãªãœãŒã¹ææè ïŒã¯ãèªåã®ä»£ããã«æ©èœã®äžéšãæäœããæš©å©ãå¥ã®ãµã€ãïŒã¯ã©ã€ã¢ã³ãïŒã«ç§»ããããšèããŠããŸãã ãã®æé ã¯ãOAuthèš±å¯ä»äžãšåŒã°ããŸãã ãã®å®è£ ã®ããã«ãã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã«OAuthãããã€ããŒã®ãµãŒããŒã«ã¢ã¯ã»ã¹ããŠãããã«ã¢ã¯ã»ã¹ã³ãŒããååŸãã以äžã§èª¬æããç¹å®ã®ãã©ã¡ãŒã¿ãŒãæž¡ãããã«èŠæ±ããŸãã æè¡çã«ã¯ãããã¯æ¢ç¥ã®URLãžã®ãã©ãŠã¶ãŒãªãã€ã¬ã¯ãã®ããã«èŠããŸãã ãŠãŒã¶ãŒããã®URLãã¯ãªãã¯ãããšãOAuthãããã€ããŒã¯ãŠãŒã¶ãŒã«ãã°ã€ã³ãèŠæ±ãããã®ã¢ããªã±ãŒã·ã§ã³ãžã®èŠæ±ãããã¢ã¯ã»ã¹ãèš±å¯ããå¿ èŠããããã©ãããå°ããŸãã ãŠãŒã¶ãŒãåæãããšãOAuthãããã€ããŒã¯ãŠãŒã¶ãŒã®ãã©ãŠã¶ãŒãã¯ã©ã€ã¢ã³ããµãŒããŒã«ãªãã€ã¬ã¯ãããããã«ã¢ã¯ã»ã¹ã³ãŒããæž¡ããŸãã ãã®åŸãã¯ã©ã€ã¢ã³ãã¯ãã¯ã©ã€ã¢ã³ããèªèšŒããclient_idãclient_secretãããã³ã¢ã¯ã»ã¹ããŒã¯ã³ïŒaccess_tokenïŒã«äº€æããããã«åä¿¡ããã³ãŒãã䜿çšããŠãã¢ã¯ã»ã¹ããŒã¯ã³ã®èªèšŒã³ãŒãã亀æããããã®ç¹å¥ãªHTTPèŠæ±ãçæããŸãã ãªã¯ãšã¹ãã¯ãµãŒããŒåŽããå®è¡ãããŸãã ãã®ããŒã¯ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ãOAuthãããã€ããŒAPIãå ¥åããããã®ãã¹ã¯ãŒããšããŠæ©èœããŸãã
OAuthãã¹ã¯ãŒãã¯ããã¹ã¯ãŒããææãããŠãŒã¶ãŒãšããã®ãã¹ã¯ãŒããæ€èšŒã§ããå¯äžã®ãµãŒããŒéã§ã®ã¿äº€æãããŸãã ãŠãŒã¶ãŒã¯ãOAuthãããã€ããŒã®ãµãŒããŒã§ã®ã¿ãã¹ã¯ãŒããå ¥åããŸãã ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãclient_secretãOAuthãããã€ããŒã«ã®ã¿éä¿¡ããŸãã åæã«ããããã€ããŒã«ã¯ããã®ãŠãŒã¶ãŒããã®ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«ãŸãã«ãã®ã¬ãã«ã®ã¢ã¯ã»ã¹æš©ãä»äžããããšã確èªããæ©äŒããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãåäœããããã«å¿ èŠãªã¢ã¯ã»ã¹æš©ãååŸããŸããããŠãŒã¶ãŒã®ãã¹ã¯ãŒããç¥ããŸããã ãŠãŒã¶ãŒã¯èªåã®ãã¹ã¯ãŒãã第äžè ã«è»¢éããªãããããã¹ã¯ãŒãã¯èªåã ãã«ç¥ãããŠãããšç¢ºä¿¡ããŠããŸãã
ã¹ã³ãŒãã¯ãèš±å¯ä»äžã¹ããŒãžã®ãã©ã¡ãŒã¿ãŒã®1ã€ãšããŠæž¡ãããŸãã ãã®ãã©ã¡ãŒã¿ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ãåãåãããæš©å©ã決å®ããŸãã ãã©ã¡ãŒã¿ãŒã¯ãOAuthãããã€ããŒãç解ã§ããã¹ããŒã¹ã§åºåãããã·ãŒã±ã³ã¹ã§æ§æãããæååã§ãã ããã§æ³šç®ãã¹ãã¯ãaccess_tokenã«ãã£ãŠãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãscopeãã©ã¡ãŒã¿ãŒã«ãªã¹ããããã¢ã¯ã·ã§ã³ã®ã¿ãå®è¡ã§ããããã«ãªãããšã§ãã OAuthãããã€ããŒã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã«æš©å©ããŒã¿ã転éããããšã«åæããããšã確èªããåã«ããŠãŒã¶ãŒã«åãæš©éã®ãªã¹ãã衚瀺ããŸãã
èš±å¯ä»äžã¹ããŒãžã®ãã1ã€ã®èå³æ·±ããã©ã¡ãŒã¿ãŒã¯ç¶æ ãšåŒã°ããæãããªã»ãã¥ãªãã£åé¡ãåé¿ããŸãã ãŠãŒã¶ãŒãOAuthãããã€ããŒã®ãµã€ãã«ãªãã€ã¬ã¯ãããã¢ããªã±ãŒã·ã§ã³ã¯ãã©ã³ãã ããŒã¯ã³ïŒCSRFããŒã¯ã³ïŒãçæãããããç¶æ ãã©ã¡ãŒã¿ãŒã«æž¡ããŸãã OAuthãããã€ããŒã¯äœãè¡ããŸããããã¢ã¯ã»ã¹ã³ãŒããšãšãã«ãããè¿ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãåä¿¡ããç¶æ ãšéä¿¡å 容ã確èªããç¶æ ãæ£ãããªãå Žåã¯èš±å¯ä»äžã¹ããŒãžãäžæ¢ããŸãã ãããçºçããªãã£ãå Žåãæœåšçãªæ»æè ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã«ããã¯ã¹ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããèš±å¯ã³ãŒããã¢ããªã±ãŒã·ã§ã³ã«è»¢éããå¯èœæ§ããããŸãã
å€éšã¢ã«ãŠã³ãã®ãã€ã³ãã£ã³ã°ãå€éšã¡ãŒã«ããã¯ã¹ã«ããèªèšŒã«äœ¿çšããããšããŸãããã ãã®å Žåãæ»æè ã¯ããªãã®ã¢ã«ãŠã³ãã«ãã°ã€ã³ããŠãç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã§è¢«å®³è ã®ã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã ãããã£ãŠããã®ãã©ã¡ãŒã¿ãŒã¯ãªãã·ã§ã³ã§ãããOAuthãå®è£ ãããã¹ãŠã®ãŠãŒã¶ãŒã«ç¶æ ã䜿çšããããšããå§ãããŸãã
å Žåã«ãã£ãŠã¯ãaccess_tokenãšãšãã«ãOAuthãããã€ããŒã¯refresh_tokenãã¯ã©ã€ã¢ã³ãã«çºè¡ããŸãã ãã®ããŒã¯ã³ã䜿çšãããšãæ°ããaccess_tokenãŸãã¯è€æ°ã®ããŒã¯ã³ãååŸã§ããŸãã æãåçŽãªå ŽåããŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ã«1åã ãèš±å¯ãäžããŸãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã®ã«ã¬ã³ããŒã«ã€ãã³ããè¿œå ããããšèããŠããŸãã ãããçºçãããã³ã«ããŠãŒã¶ãŒã¯ãªã¯ãšã¹ããåãåããŸãïŒåæãããã¢ã¯ã·ã§ã³ã®å®è¡ãã¢ããªã±ãŒã·ã§ã³ã«èš±å¯ãããã©ããïŒ åœŒãåæãããšãaccess_tokenãçæéïŒããšãã°1æéïŒçºè¡ãããŸãã ææ¥ãã¢ããªã±ãŒã·ã§ã³ãå¥ã®ã€ãã³ããè¿œå ããããšãããšããŠãŒã¶ãŒããå床ã¢ã¯ã»ã¹ãèŠæ±ãããŸãã ããããAppleããã€ã¹ã§ã®App Storeã®ä»çµã¿ã§ãã ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããã«ã¯ããã¹ã¯ãŒããå ¥åããå¿ èŠããããŸãããä»ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããšãã®æ¬¡ã®15åéã¯ããã¯å¿ èŠãããŸããã 15ååŸã«å¥ã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããããšãããšããã¹ã¯ãŒããååºŠå ¥åããå¿ èŠããããŸãã
å Žåã«ãã£ãŠã¯ããŠãŒã¶ãŒã¯åžžã«èªåã«ä»£ãã£ãŠäœæ¥ããæš©å©ãã¢ããªã±ãŒã·ã§ã³ã«äžãããããšããããŸãã é¡èãªäŸã¯ãåãªãã¡ãŒã«ã³ã¬ã¯ã¿ãŒã§ãã ãŠãŒã¶ãŒããªã³ã©ã€ã³ã«ãªã£ãŠãããã1ãæéã¢ã«ã¿ã€å±±èã§ãã€ãã³ã°ã«è¡ã£ããã«é¢ä¿ãªããã³ã¬ã¯ã¿ãŒã¯1ã€ä»¥äžã®ã¡ãŒã«ããã¯ã¹ããã¡ãŒã«ãããã¯ã¢ããããå¿ èŠããããŸãã ãã®ç¶æ³ã§ã¯ãrefresh_tokenãå¿ èŠã§ãã ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ããããããªãã©ã€ã³ã¢ã¯ã»ã¹ãèŠæ±ããå¿çã§refresh_tokenãååŸã§ããŸããããã«ããããŠãŒã¶ãŒã®ä»å ¥ãªãã«OAuthãããã€ããŒã®ãµãŒãã¹ã§æ¿èªãããŸããŸãå€ãã®access_tokenãåä¿¡ã§ããŸãã
æ¹æ³ïŒã¯ã©ã€ã¢ã³ã
æè¿ãOAuthã䜿çšããã¡ãŒã«ã³ã¬ã¯ã¿ãŒã®äœæ¥ã®ãµããŒããè¿œå ããŸããã ããã§ããŠãŒã¶ãŒã«ã¡ãŒã«ããã¯ã¹ã®ãã¹ã¯ãŒãã®å ¥åã匷å¶ããããšã¯ãªããªããMail.Ruã®ã¡ãŒã«ããã¯ã¹ããã¡ãŒã«ãåéããããšããããã³ã¬ã¯ã¿ãŒã¯ã¡ãŒã«ãµãŒããŒã«å¯ŸããŠOAuthã¯ã©ã€ã¢ã³ããšããŠæ©èœããŸãã ãã®ãããã³ã«ã§äœæ¥ã§ããããã«ãããµãŒãã¹ãã€ãŸãGoogleãšMicrosoftã®OAuthããµããŒãããŠããŸãã ããŒã¯ã³ãä¿åããããã«ãå éšFluorãµãŒãã¹ãäœæããŸããã ããŒã¯ã³ããŒã¿ããŒã¹ã®ä¿åã«å ããŠã圌ã®ã¿ã¹ã¯ã«ã¯ãèŠæ±ã«å¿ããŠã³ã¬ã¯ã¿ãŒããã®ä»ã®åœå æ¶è²»è ã«æå°éã®é 延ã§çºè¡ããããšãå«ãŸããŸãã å¥åã®ããŒã¢ã³ã¯ãæ¿èªãæ åœããå€éšãµãŒãã¹ããã®ããŒã¯ã³ã«å¯ŸãããŠãŒã¶ãŒã®åæã亀æããŸãã ã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªæš©éãçºè¡ããããã»ã¹ã段éçã«ã¬ã€ããïŒã¹ããŒãžèš±å¯ä»äžïŒãåä¿¡ããããŒã¯ã³ãFluorã«ä¿åããŸãã
refresh_tokenããµããŒãããaccess_tokenã®æå¹æéãå¶éãããµãŒãã¹ã®å ŽåãããŒã¿ããŒã¹å ã®ããŒã¯ã³ãã¿ã€ã ãªãŒã«æŽæ°ããå¿ èŠããããŸãã åæã«ã1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãŸãã¯1ã€ã®IPããã®1æ¥ãããã®ãªã¯ãšã¹ãæ°ã«ããOAuthãããã€ããŒã®å¶éã«è©²åœããŠã¯ãªããŸããã fluor-refreshããŒã¢ã³ã¯ãã®ã¿ã¹ã¯ãåŠçããŸãã FluorããŒã¢ã³ãã¡ããªã¯Perlã§èšè¿°ãããŠããŸãã ããããžã®èŠæ±ã¯ãAnyEventã©ã€ãã©ãªã䜿çšããŠéåæçã«åŠçãããŸãã ç¬èªã®IPROTOãããã³ã«ã䜿çšããŠãOAuthããŒã¢ã³ããã³ã³ã¬ã¯ã¿ãŒãšå¯Ÿè©±ããŸãã Perlã«ã¯ç¬èªã®HTTPãµãŒããŒããããŸãããããããŒã解æããå¿ èŠããããããIPROTOèŠæ±åŠçã®ããã©ãŒãã³ã¹ã¯5åé«ããªã£ãŠããŸãã ããã»ããµã®èŠ³ç¹ããæãéèŠãªã¿ã¹ã¯ã¯ãPerlããXSã§ãã XSã䜿çšãããšãã³ãŒãã®äžéšãCã§èšè¿°ãããã®äœæ¥çµæãPerlã«è»¢éã§ããŸãã
ããæç¹ã§ãFluorãšfluor-refreshã®è€æ°ã®ã³ããŒãéå§ã§ããŸãã TarantoolïŒåããHabréã§è€æ°åèšè¿°ããããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ããMail.Ruã§éçºãããïŒãä»ããŠãããŒã¯ã³ã®ã¹ãã¬ãŒãžãšããŒã¢ã³éã®çžäºäœçšãæŽçããŸãã Tarantoolã¯ããµãŒããŒã®ã¡ã¢ãªã«å®å šã«é 眮ãããNoSQLããŒã¿ããŒã¹ã§ãããããŒã¿ããã£ã¹ã¯ã«æžã蟌ãããšãã§ããŸãã Tarantoolã«ã¯è€è£œæ©èœããããLuaèšèªã§ããªãè€éãªæé ãäœæã§ãããããããŒã¯ã³ãæŽæ°ããããã®ç¹å®ã®ãã¥ãŒãæŽçããã®ã«åœ¹ç«ã¡ãŸãã
ãã¥ãŒã®è©³çŽ°ã¯ãæåã¯ç¡éã§ããïŒããŒã¯ã³ã¯åžžã«æŽæ°ããå¿ èŠããããŸãïŒã次ã«ãã¥ãŒã®ã¿ã¹ã¯ã¯ç¹å®ã®æéãæéãŸã§ã«å®äºããå¿ èŠããããšããããšã§ãã ãã®å Žåããã¥ãŒå ã®1ã€ã®ã¿ã¹ã¯ã2ã€ã®ãªãã¬ãã·ã£ãŒã«ãã£ãŠäžåºŠã«ååŸãããªãããã«ããå¿ èŠããããŸããããããªããšãç¡é§ãªäœæ¥ãè¡ããããµãŒãããŒãã£ãµãŒãã¹ãžã®ãªã¯ãšã¹ãã®é »åºŠãè¶ éããŸãã é¢é£ãããã¹ãŠã®ããžãã¯ãLuaã«å®è£ ããŸããã
Fluor-refreshã¯ãåã«Tarantoolã®é¢æ°ãåŒã³åºããæŽæ°çšã®ããŒã¯ã³ã®ãªã¹ããååŸããŸãã ã¿ã¹ã¯ã«ã€ããŠã¯ãæ°ããaccess_tokenãåãåããå¥ã®Luaé¢æ°ãä»ããŠTarantoolã«ä¿åããŸãã Luaé¢æ°ã¯ã1ã€ã®ããŒã¯ã³ã®æŽæ°ãè€æ°ã®ãªãã¬ãã·ã£ãŒã«å§ããããªãããšãããã³ããŒã¯ã³ãåžžã«éžæããããã®æå¹æéãæå®ãããééå ã«çºçããããšãä¿èšŒããŸãã ãããã£ãŠãTarantoolã®ä»£ããã«ãããšãã°memcachedããã£ãå Žåã«å®è¡ããå¿ èŠãããããã€ãã®ã¯ãšãªãããŒã¿ããŒã¹ã«ä¿åããŸãã
ããã§ããã®é»åã¡ãŒã«ã®ããŒã¯ã³ãæŽæ°ãããŠããããæå¹æéãåããŠããªãå Žåãã³ã¬ã¯ã¿ãŒã¯Fluorã«ããã¥ãŒããã€ãã¹ããŠæ°ããaccess_tokenãããã«ååŸããããã«äŸé Œããå ŽåããããŸãã ãŠãŒã¶ãŒãOAuthãããã€ããŒããã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãåãæ¶ãå ŽåããããŸãã OAuthãããã³ã«ã¯ããã®ç¶æ³ãå ±åããã¡ã«ããºã ãã¢ããªã±ãŒã·ã§ã³ã«æäŸããŸããã refresh_tokenãæ©èœããªããªã£ããšãã®åé¡ã«ã€ããŠèª¿ã¹ãŸãã ãã®å ŽåãããŒã¯ã³ãåé€ããå¿ èŠããããåæã«ã³ã¬ã¯ã¿ãŒã¯extra_authç¶æ ã«ãªããŸããã€ãŸãããŠãŒã¶ãŒã¯å床ã¢ã¯ã»ã¹ãèŠæ±ããå¿ èŠããããŸãã
çŸåšãããŸããŸãªãµãŒãã¹ã®480äžããŒã¯ã³ãFluorããŒã¿ããŒã¹ã«æ ŒçŽãããŠãããã¡ã¢ãªã®7 GBãå ããŠããŸãã 1æ¥ã«çŽ1åã®ããŒã¯ã³æŽæ°ãçºçããŸãã ãã ããFluorã¯ãã³ã¬ã¯ã¿ãŒããã®1æ¥ããã1å2500äžä»¶ã®ãªã¯ãšã¹ããåŠçããŸãã ç©ççã«ã¯ãé害çºçæã«åé·æ§ãèæ ®ããªãå Žåã1å°ã®ãµãŒããŒã§ãããåŠçã§ããŸãã
æ¹æ³ïŒãµãŒããŒ
æãåçŽãªå ŽåãOAuthãµãŒããŒã¯æ¬¡ã®ããšãã§ããã¯ãã§ãã
- æ¿èªã確èªããæ©èœãæã£ãŠããã
- ã¢ã¯ã»ã¹ããŒã¯ã³ãšæŽæ°ããŒã¯ã³ãããã³èªèšŒã³ãŒããçæããŸãã
- ããŒã¯ã³ã確èªãä¿åãç¡å¹åãåé€ããŸãã
- refresh_tokenã§ãaccess_tokenãæŽæ°ããèªèšŒã³ãŒãã§ãrefresh_tokenãšaccess_tokenãçºè¡ããŸãã
éåžžã æ¿èªãã§ãã¯ã¯å¥ã®ãµãŒãã¹ã«ãã£ãŠå®è¡ãããŸãã ãã°ã€ã³+ãã¹ã¯ãŒãã®ãã¢ããŸãã¯ããè€éãªçµã¿åããïŒããšãã°ã2èŠçŽ èªèšŒã®å ŽåïŒã«å¯ŸããŠãŠãŒã¶ãŒãæ¿èªããŸãã OAuthãäœæããå Žåããã§ã«ãã®ãµãŒãã¹ããããŸãã
ããŒã¯ã³çæã äžè¬çãªã¢ããã€ã¹ïŒããŒã¯ã³ã¯ã§ããã ãã©ã³ãã ã§ããå¿ èŠããããã©ã³ãã ã¯æå·çã«åŒ·åã§ããå¿ èŠããããŸãã
ããŒã¯ã³ç®¡ç åããŒã¯ã³ã«ã¯ã©ã€ãã¿ã€ã ãããããŠãŒã¶ãŒã«é¢é£ä»ããããŠããŸãã ããŒã¿ããŒã¹å ã®åçŽãªããŒãã«ã«ãããããŒã¯ã³ã®ä¿åããŠãŒã¶ãŒãžã®ãã€ã³ããããã³æå¹æéãèš±å¯ãããŸãã ããŒã¿ãå°ãªããäœæ¥é床ãéããããRAMã«ããŒã¿ãä¿åããããŒã¿ããŒã¹ãæãŸããã§ãã ãŸããããŒã¿ããŒã¹ããã€ãã¹ããŠå€ãããŒã¯ã³ãåé€ããããŒã¢ã³ãå¿ èŠã§ãã
ãªãã¬ãã·ã¥ããŒã¯ã³ã«ããæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ã®çºè¡ã¯ ãããªãå¹³å¡ãªæé ã§ãããããã«çŠç¹ãåãããŸããã ããã«ã¯Tarantoolã䜿çšããŸãã ããŒã¿ãã¡ã¢ãªã«ä¿åããæŽåæ§ã確ä¿ããŸãã ãããŠæãéèŠãªããšã¯ãå€ãããŒã¯ã³ãåé€ããããžãã¯ãã«ãã»ã«åããŸãã ããã¯ãå éšLuaããã·ãŒãžã£ã§å®è£ ã§ããŸãã ãã1ã€ã®èå³æ·±ãç¹ã¯ããŠãŒã¶ãŒããã¹ã¯ãŒããå€æŽããå Žåã«ããŒã¯ã³ãåé€ããããšã§ãã ãããè¡ãã«ã¯ããŠãŒã¶ãŒã«é¢é£ä»ããããŠãããã¹ãŠã®ããŒã¯ã³ãååŸããå¿ èŠããããŸãã ããã«ã¯ããŠãŒã¶ãŒã«å¿ããŠäœæãããã»ã«ã³ããªã€ã³ããã¯ã¹ãå¿ èŠã§ããä»ã®å€ãã®ããŒã¿ããŒã¹ãšã¯ç°ãªããTarantoolã«ã¯ãã®ãããªæ©äŒããããŸãã
ã·ã¹ãã æ§æã®æ©èœã ããã§éèŠãªã®ã¯ãé床ãéã®äœ¿çšçãèé害æ§ã®3ç¹ã§ãã Tarantoolã¯ãRAMããã³ã»ã«ã³ããªã€ã³ããã¯ã¹ãšã®ã¿å¯Ÿè©±ããããšã«ãããäœæ¥ã®é床ãæäŸããŸãã éã®å©çšã«ã€ããŠã¯ããµãŒããŒã®ããã»ããµã³ã¢ãæ倧éã«äœ¿çšã§ããããã«ããTarantoolãåå²ããŸãã ãã©ãŒã«ããã¬ã©ã³ã¹ã¯ãç°ãªãDCã§ã®ã¬ããªã±ãŒã·ã§ã³ã«ãã£ãŠå®çŸãããŸãã ã¬ããªã±ãŒã·ã§ã³ã䜿çšãããšãåã ã®ããŒã¢ã³ãšãã·ã³å šäœã®äž¡æ¹ãåèµ·åã§ããŸãã
ãã®ãããæ¬æ¥ãOAuthèªèšŒã䜿çšããŠMail.Ruã¡ãŒã«ãµãŒãã¹ã®IMAPãããã³ã«ã«æ¥ç¶ããæ©èœãçºè¡šããŸããã ãã¹ã¯ãããããã³ã¢ãã€ã«ããã€ã¹ã®éçºè ãšã¯ã©ã€ã¢ã³ãã«ãã¡ãŒã«ããã¯ã¹ããã¡ãŒã«ãåéãããšãã«å®è£ ããããšããå§ãããŸãã
æ¥ç¶ã«é¢ããããã¥ã¡ã³ãã¯ãåœç€Ÿã®Webãµã€ãã§å ¥æã§ããŸãã çŸæç¹ã§ã¯ããã®æ©äŒãæäŸãããµãŒãã¹ããã¡ãŒã«ãããå®å šãªæ¹æ³ã§åéãããã®æ°ãå¢ãããããšèããŠããŸãã ããã«OAuth 2.0ã§ã®äœæ¥ãHTTPSã§ã®äœæ¥ãšåãé»åã¡ãŒã«ãµãŒãã¹ã®ãŽãŒã«ãã¹ã¿ã³ããŒãã«ãªãããšãé¡ã£ãŠããŸãã