Gmail REST API´Â Service side Web applicationÀ¸·Î Access tokenÀ» ¹Þ¾Æ Gmail API¸¦ »ç¿ëÇÏ´Â °úÁ¤À» ¼³¸íÇÏ¿´°í ÀÌ °æ¿ì¿¡´Â APIÀÇ ±ÇÇÑ(scope) ½ÂÀÎÀ» À§Çؼ °èÁ¤ »ç¿ëÀÚÀÇ ·Î±×Àΰú ¸í½ÃÀû ±ÇÇÑ ½ÂÀÎ °úÁ¤ÀÌ ÇÊ¿äÇÏ¿´´Ù. JWT (Json Web Token) ¹æ½ÄÀº ¼¹ö-¼¹ö ÀÎÁõ ¹æ½ÄÀ¸·Î À¥ ·Î±×ÀÎ ¾øÀÌ ¼ºñ½ºÀÇ ÀÎÁõÀ» ¹ÞÀ» ¼ö ÀÖ´Â ¹æ¹ýÀ¸·Î ¼¹ö¿¡ °ø°³¸¦ Å°¸¦ ¹Ì¸® µî·ÏÇÏ¿© ÀÌ¿¡ »óÀÀÇÏ´Â Client¿¡ Private Å°·Î ÀÎÁõ¹Þ´Â ¹æ½ÄÀÌ´Ù. ¼¹ö-¼¹ö Application ±â¹ÝÀ¸·Î Google API¸¦ »ç¿ëÇϱâ À§ÇÑ »çÀü Áغñ ³»¿ëÀÌ´Ù.
JWT ¹æ½Ä Àå´ÜÁ¡
- »ç¿ëÀÚ ·Î±×ÀÎ ÇÊ¿ä ¾ø´Ù. Çѹø ÀÎÁõµÈ ¼ºñ½º °èÁ¤ÀÇ JWTÀº Refresh token°ú µ¿ÀÏÇÏ°Ô Access tokenÀ» °è¼Ó ¹ß±Þ¹ÞÀ» ¼ö ÀÖ´Ù.
- »ç¿ëÀÚ ÀÎÁõ Á¤º¸°¡ JWT¿¡ ¸ðµÎ Æ÷ÇԵDZ⠶§¹®¿¡ Ãß°¡ÀûÀÎ ÀúÀå¼Ò°¡ ÇÊ¿ä ¾ø´Ù.
- ¼ºñ½º Private key ±â¹ÝÀ¸·Î ÇÑ¹Ý ¹ß±ÞµÈ Private Àº À¯ÃâµÇ´Â °æ¿ì º¸¾È»ó ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù.
- ±¸±ÛÀÇ °æ¿ì º°µµÀÇ ¼ºñ½º °èÁ¤À» »ý¼ºÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ °èÁ¤ÀÚ °èÁ¤Àº ¿¬µ¿Àº °¡´ÉÇÏÁö¸¸ ¸¶Ä¡ º°µµÀÇ °èÁ¤Ã³·³ ÀϺΠÁ¦¾à »çÇ×ÀÌ Á¸ÀçÇÑ´Ù.
JWT ±¸¼º
JWT´Â 3°³ÀÇ ÆÄÆ®·Î 1) Header 2) Claim set, 3) Signature·Î ±¸¼ºµÇ¸ç, °¢°¢ Á¡·Î ±¸ºÐµÈ´Ù. Header¿Í Clamin SetÀº JSONÀ» Base64URL·Î encoding ÇÑ UTF-8 ½ºÆ®¸µÀÌ´Ù. ÀϹÝÀûÀÎ Base64 ÀÎÄÚµùÀº ¡°+¡±, ¡°/¡±, ¡°=¡±¸¦ Æ÷Ç﵃ ¼ö ÀÖÁö¸¸, URI¿¡¼ ÆĶó¹ÌÅÍ·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï URL-Safe ÇÑ Base64url ÀÎÄÚµùÀ» »ç¿ëÇÑ´Ù. Signature´Â Private Å°¸¦ »ç¿ëÇؼ Base64url·Î encoding µÈ ½ºÆ®¸µÀÌ´Ù.
- Header´Â Çؽ¬ ¾ÏÈ£È ¾Ë°í¸®Áò(e.g. RS256)°ú TokenÀÇ Å¸ÀÔ(JWT)À» ÁöÁ¤ÇÑ´Ù. ±¸±ÛÀÇ °æ¿ì¿¡´Â RS256 ¾Ë°í¸®Áò¸¸ Áö¿øÇÏ°í, Private Key ID °ªÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù.
- Claim setÀº name / valueÀÇ ÇÑ ½ÖÀ¸·Î ±¸¼ºµÇ¾î ÀÖ°í ¿©·¯ °³ÀÇ Å¬·¹ÀÓÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Ù. °¢ ¼¹ö¸¶´Ù claim set¿¡ Çʼö Á¶°ÇÀ» ¸í½ÃÇÏ°í ÀÖÀ¸¸ç, ±¸±Û API¿¡¼´Â iss, scope, aud, exp, iatÀÇ Å¬·¹ÀÓ °ªÀº ÇʼöÀÌ´Ù.
- Signature´Â secret key¸¦ Æ÷ÇÔÇÏ¿© ¾ÏÈ£È (RSA256 Base64url safe)
{Base64url encoded header}.{Base64url encoded claim set}.{Base64url encoded signature}
|