ð JWTãã³ãŒããŒ
JWT(JSON Web Token)ã®ããããŒãšãã€ããŒãéšåããã³ãŒãããŠäžèº«ã確èªã§ããããŒã«ã§ããæå¹æéåãã®å€å®ã衚瀺ãããŸããAPIéçºæã®ããŒã¯ã³ã®äžèº«ç¢ºèªããèªèšŒãŸããã®ãããã°ã«äŸ¿å©ã§ãã
äœ¿ãæ¹
- ãJWTããŒã¯ã³ãæ¬ã«JWTæååã貌ãä»ããŸãã
- ããããŒãšãã€ããŒãããã³ãŒããããå 容ã衚瀺ãããŸãã
- æå¹æé(exp)ãåºã«ãããŒã¯ã³ãæå¹ãæéåããã衚瀺ãããŸãã
èšç®ã®ä»çµã¿
JWTïŒJSON Web TokenãRFC 7519ïŒã¯ããããããŒ.ãã€ããŒã.眲åãã®3ã€ã®éšåããããã§ã€ãªãã æååã§ããããããŒã«ã¯çœ²åã¢ã«ãŽãªãºã ïŒHS256ãªã©ïŒããã€ããŒãã«ã¯ãŠãŒã¶ãŒIDãæå¹æéãªã©ã®ãã¯ã¬ãŒã ããJSONã§å ¥ã£ãŠããŸãã ããããŒãšãã€ããŒãã¯ãURLã§å®å šã«äœ¿ããBase64URL圢åŒã§ãšã³ã³ãŒããããŠããã ãã§ãæå·åã¯ãããŠããŸããããã®ããŒã«ã¯ãBase64URLã®ã-ãã_ããéåžžã®Base64ã®ã+ãã/ãã«æ»ããçç¥ãããŠããããã£ã³ã°ïŒ=ïŒãè£ã£ãŠãããã³ãŒãããåŸãããJSONã衚瀺ããŠããŸãã æšæºçãªã¯ã¬ãŒã ã®ãã¡ãexpïŒæå¹æéïŒã»iatïŒçºè¡æ¥æïŒã»nbfïŒæå¹éå§æ¥æïŒã¯ã1970幎1æ1æ¥ïŒUTCïŒããã®çµéç§æ°ïŒUnixæå»ïŒã§è¡šãããŸãããã®ããŒã«ã¯ exp ãçŸåšæå»ãšæ¯ã¹ãŠãæå¹æéãåããŠãããã©ããã衚瀺ããŸãã眲åã®æ€èšŒã¯è¡ããªãããã衚瀺ãããå å®¹ãæ¹ãããããŠããªãããšã®ä¿èšŒã«ã¯ãªããŸããã
èšç®äŸ
次ã®ããŒã¯ã³ïŒçœ²åéšåã¯çç¥ïŒããã³ãŒãããå Žå eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IlRhcm8iLCJpYXQiOjE3NTgxNjgwMDAsImV4cCI6MTc1ODE3MTYwMH0 ããããŒïŒ{"alg": "HS256", "typ": "JWT"} ãã€ããŒãïŒ{"sub": "1234", "name": "Taro", "iat": 1758168000, "exp": 1758171600} iat 㯠2025-09-18 04:00:00 UTCãexp ã¯ãã®1æéåŸã® 05:00:00 UTC ã§ããçŸåšã¯ãã®æå»ãéããŠãããããæéåãããšè¡šç€ºãããŸãã
䜿çšäžã®æ³šæ
- 眲åã¯æ€èšŒããŸãããæ¹ãããããŠããªããã®ç¢ºèªã«ã¯ãçºè¡å ã®éµã䜿ã£ãæ€èšŒãå¿ èŠã§ãã
- ãã€ããŒãã¯èª°ã§ããã³ãŒãã§ããŸãããã¹ã¯ãŒããªã©ã®ç§å¯æ å ±ãJWTã«å ¥ããªãã§ãã ããã
- æå¹æéã®å€å®ã¯ã䜿ãã®ç«¯æ«ã®æèšãåºæºã«ããŠããŸããæèšããããŠãããšå€å®ããããŸãã
- æå·åãããJWTïŒJWEã5ã€ã®éšåãããªã圢åŒïŒã«ã¯å¯Ÿå¿ããŠããŸããã
ãããã質å
眲å(signature)ãæ€èšŒãããŸãã?
ãããããã®ããŒã«ã¯ããããŒãšãã€ããŒãã®ãã³ãŒã(å 容衚瀺)ã®ã¿ãè¡ãã眲åã®æ€èšŒã¯è¡ããŸãããç§å¯éµãäœ¿ãæ€èšŒã¯è¡ãããªãããå®å šã«ç¢ºèªã§ããŸãã
ããŒã¯ã³ã®æå¹æéãåããŠãããããããŸãã?
ã¯ãããã€ããŒãå ã®exp(æå¹æé)ã¯ã¬ãŒã ãåºã«ãæå¹æéåããã©ããã衚瀺ããŸãã
貌ãä»ããããŒã¯ã³ã¯ãµãŒããŒã«éä¿¡ãããŸãã?
ãããããã³ãŒãã¯ãã¹ãŠãã©ãŠã¶å ã§è¡ãããå€éšã«éä¿¡ãããããšã¯ãããŸãããç§å¯æ å ±ãå«ãããŒã¯ã³ã§ãå®å¿ããŠå 容ã確èªã§ããŸãã
ãã€ããŒãã®ã¯ã¬ãŒã (subã»iatãªã©)ã®æå³ã確èªã§ããŸãã?
ãã³ãŒãããããã€ããŒãã¯JSON圢åŒã§ãã®ãŸãŸè¡šç€ºããããããsubã»iatã»expãªã©ã®æšæºã¯ã¬ãŒã ã®å€ããã®ãŸãŸç¢ºèªã§ããŸãã
äžæ£ãªåœ¢åŒã®ããŒã¯ã³ãå ¥åãããšã©ããªããŸãã?
JWTãšããŠæ£ãã圢åŒ(ããããŒ.ãã€ããŒã.眲åã®ãããåºåã)ã§ãªãå Žåã¯ãè§£æãšã©ãŒã衚瀺ãããŸãã