ð JWTçæããŒã«
ã¢ã«ãŽãªãºã : HS256 (HMAC-SHA256) åºå®
ç§å¯éµãå ¥åããŠãã ãã
ãã€ããŒã(JSON)ãšç§å¯éµãå ¥åããã ãã§ãHS256(HMAC-SHA256)眲åä»ãã®JWT(JSON Web Token)ããã®å Žã§çæã§ããããŒã«ã§ãã眲åã®èšç®ã«ã¯ãã©ãŠã¶æšæºã®Web Crypto APIã䜿çšããŠããŸãã
äœ¿ãæ¹
- ãã€ããŒãã®JSONãç·šéããŸã(subãnameãiatãªã©ä»»æã®ã¯ã¬ãŒã ãèšå®ã§ããŸã)ã
- 眲åã«äœ¿ãç§å¯éµãå ¥åããŸãã
- çæãããJWTãèªåçã«è¡šç€ºãããã®ã§ããã³ããŒãã§ã¯ãªããããŒãã«ã³ããŒã§ããŸãã
èšç®ã®ä»çµã¿
JWTïŒJSON Web TokenãRFC 7519ïŒã¯ããã°ã€ã³æ å ±ãªã©ã眲åä»ãã§åãæž¡ãããã®ããŒã¯ã³ã§ããããããŒ.ãã€ããŒã.眲åãã®3ã€ã®éšåããããã§ã€ãªãã æååã§ãããã®ããŒã«ã¯ãå ¥åãããã€ããŒãïŒJSONïŒãšç§å¯éµãããHS256æ¹åŒã§çœ²åããJWTãäœããŸãã 1. ããã㌠{"alg":"HS256","typ":"JWT"} ãBase64URLã«ãã 2. ãã€ããŒãã®JSONã空çœãªãã®åœ¢ã«ããŠBase64URLã«ãã 3. ãããããŒ.ãã€ããŒããã®æååããç§å¯éµã䜿ã£ãŠHMAC-SHA256ã§çœ²åããBase64URLã«ãã 4. 3ã€ããããã§ã€ãªã 眲åã®èšç®ã¯ããã©ãŠã¶ã®Web Crypto APIã§è¡ããŸããåãåã£ãåŽã¯ãåãç§å¯éµã§çœ²åãèšç®ãçŽããäžèŽããã°æ¹ãããããŠããªããšå€æã§ããŸãã
èšç®äŸ
ãã€ããŒã: {"sub":"1234567890","name":"John Doe","iat":1516239022} ç§å¯éµ: your-256-bit-secret çµæïŒjwt.ioã®ãµã³ãã«ãšåãå€ïŒ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
䜿çšäžã®æ³šæ
- JWTã®ãã€ããŒãã¯æå·åãããŠããªããããBase64URLããã³ãŒãããã°èª°ã§ãèªããŸãããã¹ã¯ãŒããªã©ã®ç§å¯ã®æ å ±ãå ¥ããŠã¯ãããŸããã
- HS256ã®ç§å¯éµã¯ãæšæž¬ããã«ããååã«é·ãã©ã³ãã ãªå€ïŒ32ãã€ã以äžïŒã«ããŠãã ãããçãéµã¯ç·åœããã§èŠã€ããããå±éºããããŸãã
- æå¹æéïŒexpïŒãå ¥ããŠãããšãããŒã¯ã³ãæŒãããšãã®è¢«å®³ãå°ããã§ããŸããæ¬çªã®ç§å¯éµã¯ããã®ãããªWebããŒã«ã«å ¥åããªãã§ãã ããã
ãããã質å
眲åã®èšç®ã¯ã©ãã§è¡ãããŠããŸãã?
ãã©ãŠã¶ã«æšæºæèŒãããŠããWeb Crypto API(crypto.subtle)ã䜿ã£ãŠããã¹ãŠãã©ãŠã¶å ã§HMAC-SHA256眲åãèšç®ããŠããŸããå ¥åããç§å¯éµããµãŒããŒã«éä¿¡ãããããšã¯ãããŸããã
HS256以å€ã®ã¢ã«ãŽãªãºã ã«ã¯å¯Ÿå¿ããŠããŸãã?
ããããçŸåšã®ããŒãžã§ã³ã¯HS256(HMAC-SHA256)ã®ã¿ã«å¯Ÿå¿ããŠããŸãã
çæããJWTãæ¬åœã«æ£ããã確èªã§ããŸãã?
ã¯ããåœãµã€ãã®JWTãã³ãŒãããŒã«ã«è²Œãä»ããŠå 容ã確èªããããjwt.ioãªã©ã®å€éšããŒã«ã§ç§å¯éµãæå®ããŠçœ²åãæ€èšŒãããã§ããŸãã