æçµæŽæ°:
ãä»çµã¿è§£èª¬ãOAuthã¯ã©ããã£ãŠã¢ã¯ã»ã¹ãèš±å¯ããã®ã â èªå¯ã³ãŒãã»PKCEã»ãã°ã€ã³ãšã®éããå³è§£
äºå®ç®¡çã¢ããªã«ã«ã¬ã³ããŒã飿ºãããšããã«ã¬ã³ããŒã®ãã¹ã¯ãŒããæž¡ãã®ïŒ
ããã§èª¬æããOAuth 2.0ã®èªå¯ã³ãŒããããŒã§ã¯ã飿ºå
ã¢ããªã«ãã¹ã¯ãŒããæž¡ãããå¿
èŠãªæäœãèš±å¯ã§ããããããšãã°ãäºå®ãèªãããšã¯èš±å¯ããããã©ãæžãæãã¯èš±å¯ããªãããšããã€ã¡ãŒãžã ããéšå±ã®åéµããã䜿ããå Žæã決ãŸã£ãå
¥é€šèšŒã«è¿ããã ã
ã誰ãã確ãããããšãèš±å¯ãããã¯éããã ãã誰ããã®èš±å¯ãåºãã®ïŒ
èªèšŒã¯æ¬äººã確ãããããšãèªå¯ã¯æäœãèš±ãããšã ããç»å Žããã®ã¯å©çšè
ã飿ºããã¢ããªãèš±å¯ãæ±ãèªå¯ãµãŒããŒãäºå®ãªã©ãæäŸããAPIã®4ã€ãæåŸã®APIåŽããªãœãŒã¹ãµãŒããŒãšåŒã¶ãã ãèªå¯ãµãŒããŒãšAPIãåããµãŒãã¹å
ã«ããå Žåããããã
飿ºãã¿ã³ãæŒããšãäœãèµ·ããã®ïŒ
ã¢ããªãæ±ããæš©éã®ç¯å²ãã€ãŸãã¹ã³ãŒããæå®ãããã©ãŠã¶ãèªå¯ãµãŒããŒãžæ¡å
ããããå¿
èŠãªãã°ã€ã³ãåæã®ç¢ºèªãæžããšãç»é²ãããæ»ãå
ãžçæéã ã䜿ããèªå¯ã³ãŒããå±ããç¶ããŠã¢ããªãã³ãŒããããŒã¯ã³äº€æçšã®çªå£ãžéããã¢ã¯ã»ã¹ããŒã¯ã³ãåãåããã ãããã䜿ã£ãŠAPIã«äºå®ã®èªã¿åããé Œããã
ã³ãŒããéäžã§æŸã£ã人ããããŒã¯ã³ã«äº€æã§ãããã ãã©âŠïŒ
ãã®æšªåããžã®å¯Ÿçã®äžã€ãPKCEïŒãã¯ã·ãŒïŒã ããã¢ããªã¯é£æºãå§ãããã³ã«äºæž¬ãã«ããcode_verifierãäœããS256æ¹åŒã§å€æããcode_challengeãå
ã«éãã亀ææã«ã¯å
ã®verifierã瀺ããŠç
§åãããã ãã³ãŒãã ããçãã§ãããã®ç
§åãéããªãããã«ããä»çµã¿ã ããéä¿¡ãã¢ããªèªäœã®ä¿è·ãå¿
èŠã ãã
ã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ãããšããåèšèãå¿
èŠãªã®ïŒ
å®å
šã«ç§å¯ãä¿ç®¡ã§ãããµãŒããŒåã®ã¢ããªã§ã¯ãã·ãŒã¯ã¬ãããªã©ã§ã¢ããªèªèº«ãèªèšŒããããäžæ¹ãé
åžããã¹ããã¢ããªããã©ãŠã¶å
ã®ã¢ããªã«å
±éã®ç§å¯ãåã蟌ãã§ããç§å¯ãšããŠå®ããªããããããå
¬éã¯ã©ã€ã¢ã³ãã§ã¯èªå¯ã³ãŒããããŒã«PKCEãå¿
é ãšããããµãŒããŒåã«ãæšå¥šãããŠãããã ãPKCEã¯ã¢ããªå
šäœã®èº«å
ã蚌æããã·ãŒã¯ã¬ããã®ä»£çšåã§ã¯ãªããã
ããããã»ãã®ãµãŒãã¹ã§ãã°ã€ã³ãã¯ãäœãèŠãŠæ¬äººã ãšå€æããã®ïŒ
æšæºçãªæ¹æ³ã®äžã€ã¯ãOAuth 2.0ã«èªèšŒãå ããOpenID Connectã ããAPIãåŒã¶ã¢ã¯ã»ã¹ããŒã¯ã³ãšã¯å¥ã«ãèªèšŒçµæãäŒããIDããŒã¯ã³ã䜿ããã¢ããªã¯çºè¡å
ãå®å
ãæå¹æéã眲åãªã©ãèŠæ Œã«æ²¿ã£ãŠæ€èšŒãããã ãJWTã¯ãã®ããŒã¯ã³ã®åœ¢åŒãæååãèªããã ãã§ã¯ãã°ã€ã³ãèªããŠã¯ãããªããã
ã¢ã¯ã»ã¹ããŒã¯ã³ãæéåãã«ãªã£ãããæ¯åãã°ã€ã³ãçŽãã®ïŒ
ãµãŒãã¹ããªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããå Žåã¯ãããã䜿ã£ãŠæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸã§ãããããã ãçºè¡ããããšã¯éãããæå¹æéãäžåŸã§ã¯ãªããã ãæŒããã«åããæŽæ°æã®ããŒããŒã·ã§ã³ãªã©ã®ä¿è·ãå¿
èŠã§ãå©çšè
ã飿ºãåãæ¶ããå Žåãåèªå¯ãå¿
èŠã«ãªãããšããããã
䜿ã人ãšäœã人ã¯ãäœã確ãããã°ããïŒ
å©çšè
ã¯é£æºå
ã®ã¢ããªåãšæ±ããæš©éã確èªããäžèŠãªé£æºãå€ãããäœãåŽã¯ç»é²ããæ»ãå
ã®ç
§åãPKCEãstateãªã©ãçšããCSRF察çãããŒã¯ã³ã®æ€èšŒãšä¿ç®¡ã確èªããããå¿
èŠãªå¯Ÿçã¯æ§æã§å€ããã®ã§ãå
¬åŒSDKãã©ã€ãã©ãªã®å¯Ÿå¿ãããŒã«æ²¿ã£ãŠå®è£
ãããã ãOAuthã¯ãäœãèš±ããããOIDCã¯ã誰ã®èªèšŒçµæãããšåãããšæŽçãããããã
3çš®é¡ã®æ å ±ãåããŠèãã
| æ å ± | äž»ãªåœ¹å² | æž¡ãå ã»ç¢ºèªããåŽ |
|---|---|---|
| èªå¯ã³ãŒã | ããŒã¯ã³ãžäº€æããããã®çæéã»äžåéãã®æ å ± | ã¢ããªããèªå¯ãµãŒããŒãž |
| ã¢ã¯ã»ã¹ããŒã¯ã³ | èš±å¯ãããAPIæäœã«äœ¿ã | APIïŒãªãœãŒã¹ãµãŒããŒïŒ |
| IDããŒã¯ã³ | OIDCã§èªèšŒçµæãäŒãã | ãã°ã€ã³ãåãå ¥ããã¢ã㪠|
å³ã¯ãå©çšè ãèš±å¯ããèªå¯ã³ãŒããããŒïŒPKCEãç°¡ç¥åããŠããŸããOAuthã«ã¯å©çšè ã®æäœã䌎ããªãå¥ã®ãããŒããããŸããOIDCã®å©çšè èå¥ã¯çºè¡å ïŒissïŒãšå©çšè èå¥åïŒsubïŒãåºæºã«ããã¡ãŒã«ã¢ãã¬ã¹ã ããäžå€ã®IDã ãšæããªãããšã倧åã§ããnonceãéã£ãå Žåã¯ããã®å€ãå¿çãšäžèŽããããšãæ€èšŒããŸãã
次ã«èªãïŒJWTã®äžèº«ãšçœ²åã®ä»çµã¿ã
åèè³æ
ç¢ºèªæ¥ïŒ2026幎9æ21æ¥ã
- RFC 6749 â OAuth 2.0 â 4è ã®åœ¹å²ãèªå¯ã³ãŒããããŒãã¹ã³ãŒããä»»æã®ãªãã¬ãã·ã¥ããŒã¯ã³ã
- RFC 7636 â PKCE â code_verifierãšS256ã«ããcode_challengeãã³ãŒã亀ææã®ç §åã
- RFC 9700 â OAuth 2.0 Security Best Current Practice â ãªãã€ã¬ã¯ãURIã®ç §åãå ¬éã¯ã©ã€ã¢ã³ãã®PKCEãCSRF察çããªãã¬ãã·ã¥ããŒã¯ã³ã®ä¿è·ã
- OpenID Connect Core 1.0 â IDããŒã¯ã³ã®åœ¹å²ãissã»audã»expãªã©ã®æ€èšŒãsubã«ããå©çšè ã®èå¥ã
èšæ£å±¥æŽ
- 2026-09-21ïŒOAuthãšãã°ã€ã³ã®åºå¥ãã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ããã®é©çšç¯å²ãPKCEãšããŒã¯ã³æ€èšŒã®èª¬æãä¿®æ£ã