ORACLE
HOME > DB > ORACLE
2018.12.07 / 17:36

JWT(Json Web Token)À» ÀÌ¿ëÇÑ ¸ð¹ÙÀÏ ÀÎÁõ

hanulbit
Ãßõ ¼ö 221

ÅäÅ« ¹æ½ÄÀÇ ¸ð¹ÙÀÏ À¯Àú ÀÎÁõ¿¡ ´ëÇØ Àß Á¤¸®µÇ¾î ÀÖ´Â ±ÛÀÌ ÀÖ¾î ¹ø¿ªÇϸç Á¤¸®Çغ»´Ù.

Ãâó: The Ultimate Guide to Mobile API Security

¸ð¹ÙÀÏ API º¸¾ÈÀÇ ¹®Á¦Á¡

°¡Àå ±âÃÊÀûÀÎ API º¸¾ÈÀÇ ÇüÅ´ HTTP Basic Authentication(HTTP ±âº» ÀÎÁõ)ÀÌ´Ù. ÀÌ ¹æ½ÄÀº ¸Å¿ì °£°áÇÏ°Ô ÀÛµ¿Çϱ⠶§¹®¿¡ API ¼­¹ö¸¦ ¸¸µå´Â »ç¶÷À̳ª API¸¦ È°¿ëÇÒ °³¹ßÀÚ ¸ðµÎ¿¡°Ô Æí¸®ÇÔÀ» Á¦°øÇØÁØ´Ù.
±âº»ÀûÀÎ ÀÛµ¿¹æ½ÄÀº ´ÙÀ½°ú °°´Ù.

  • °³¹ßÀÚ¿¡°Ô APIÅ°(º¸Åë ID¿Í PW)°¡ ÁÖ¾îÁø´Ù. ÀÌ APIÅ°´Â ´ÙÀ½°ú °°Àº ÇüŸ¦ º¸ÀδÙ.
    • 3bb743bbd45d4eb8ae31e16b9f83c9ba:ffb7d6369eb84580ad2e52ca3fc06c9d.
  • °³¹ßÀÚ´Â ¹ß±Þ¹ÞÀº APIÅ°¸¦ ÀÚ½ÅÀÇ ¼­¹ö ³» ¾ÈÀüÇÑ °÷¿¡ º¸°üÇØ¾ß ÇÒ Ã¥ÀÓÀÌ ÀÖ´Ù.
  • °³¹ßÀÚ´Â APIÅ°¸¦ HTTP ÀÎÁõ Çì´õ¿¡ ´ã¾Æ API ¼­¹ö¿¡ request¸¦ ³¯¸°´Ù.
  • Request¸¦ cURL·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù.
$ curl --user 3bb743bbd45d4eb8ae31e16b9f83c9ba:ffb7d6369eb84580ad2e52ca3fc06c9d https://api.example.com/v1/test
  • cURLÅøÀº APIÀÎÁõ°ªÀ» ¹Þ¾Æ¿Í base64 ÀÎÄÚµùÀ» °ÅÃÄ ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ HTTP ÀÎÁõ Çì´õ¸¦ ¸¸µé¾î ³½´Ù.
    • Basic M2JiNzQzYmJkNDVkNGViOGFlMzFlMTZiOWY4M2M5YmE6Zm¡¦
  • API ¼­¹ö¿¡¼­´Â ÀÌ ÇÁ·Î¼¼½º¸¦ ¿ª¼øÀ¸·Î ÇàÇÑ´Ù. ¼­¹ö¿¡¼­ HTTPÇì´õ¸¦ ã¾Æ³»¸é, base64 µðÄÚµùÀ» ÇÏ¿© APIÅ°·ÎºÎÅÍ ID¿Í PW¸¦ »Ì¾Æ³»°í °ËÁõÀ» ÇÑ µÚ¿¡ ÀÀ´äÀ» °è¼Ó ÁøÇàÇÒ °ÍÀÎÁö °áÁ¤ÇÑ´Ù.

HTTP ±âº» ÀÎÁõ ¹æ½ÄÀº °£°áÇϸ鼭 ÈǸ¢ÇÑ ÀÎÁõ¹æ½ÄÀÌ´Ù. °³¹ßÀÚ´Â APIÅ°¸¦ ¹ß±Þ¹Þ´Â °Í ¸¸À¸·Î API¼­ºñ½º¸¦ °£ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.

HTTP ±âº» ÀÎÁõ ¹æ½ÄÀÌ ¸ð¹ÙÀÏ ¾Û¿¡ ÀûÇÕÇÏÁö ¾ÊÀº ÀÌÀ¯´Â APIÅ°¸¦ ¸ð¹ÙÀÏ ±â±â ³»¿¡ ¾ÈÀüÇÏ°Ô ÀúÀåÇÏ´Â À̽´ ¶§¹®ÀÌ´Ù. ¶ÇÇÑ HTTP ±âº» ÀÎÁõ ¹æ½ÄÀº RawÇÑ APIÅ°¸¦ ¸Å ¿äû¶§¸¶´Ù »ç¿ëÇØ¾ß ÇϹǷÎ, ½Ã°£ÀÌ °¥¼ö·Ï Ãë¾àÁ¡ °ø°Ý¿¡ ³ëÃâµÉ °¡´É¼ºÀÌ ³ô¾ÆÁø´Ù. ¶ÇÇÑ APIÅ°°¡ ³»ÀåµÈ ä·Î ¹èÆ÷µÈ ¾ÛÀ» ¸®¹ö½º ¿£Áö´Ï¾î¸µ Çϸé APIÅ°¸¦ ¾Ë¾Æ³»´Â °ÍÀÌ °¡´ÉÇØÁö±â ¶§¹®¿¡ API ¼­ºñ½º°¡ ¾Ç¿ëµÉ ¼ÒÁö°¡ ÀÖ´Ù. ´ëºÎºÐÀÇ °æ¿ì ´Ù¼ö¿¡°Ô ¹èÆ÷µÇ´Â ¸ð¹ÙÀÏ ¾Û ³»¿¡ ¾ÈÀüÇÏ°Ô APIÅ°¸¦ º¸°üÇÏ´Â ¹æ¹ýÀº ¾ø´Ù°í º¼ ¼ö ÀÖ´Ù. ??¹®¿¡ HTTP ±âº» ÀÎÁõ ¹æ½ÄÀº À¥ ºê¶ó¿ìÀú³ª ¸ð¹ÙÀÏ ¾Û°ú °°Àº ½Å·ÚÇϱâ Èûµç ȯ°æ¿¡ ÀûÇÕÇÑ ÀÎÁõ ¹æ½ÄÀº ¾Æ´Ï´Ù.

¸ð¹ÙÀÏ APIº¸¾È¿¡ OAuth2 µµÀÔÇϱâ

OAuth2´Â ½Å·ÚÇϱ⠾î·Á¿î ±â±â(¸ð¹ÙÀÏ)¿¡¼­ »ç¿ëµÇ´Â API ¼­ºñ½ºÀÇ º¸¾ÈÀ» À§ÇÑ ÈǸ¢ÇÑ ÇÁ·ÎÅäÄÝÀÌ´Ù. ¶ÇÇÑ ¸ð¹ÙÀÏ »ç¿ëÀÚ¸¦ ÀÎÁõÇÒ ¼ö ÀÖ´Â ¼ö´ÜÀ¸·Î ÅäÅ« ÀÎÁõ¹æ½ÄÀ» Á¦°øÇÑ´Ù. »ç¿ëÀÚÀÇ °üÁ¡¿¡¼­ OAuth2 ÅäÅ« ÀÎÁõÀº ´ÙÀ½°ú °°ÀÌ ÁøÇàµÈ´Ù.(OAuth2´Â ÀÌ ÇÁ·Î¼¼½º¸¦ Password Grant Flow¶ó°í ºÎ¸¥´Ù.)

  1. »ç¿ëÀÚ°¡ ¸ð¹ÙÀÏ ¾ÛÀ» ½ÇÇàÇÏ°í, IDȤÀº ¸ÞÀÏ ÁÖ¼Ò¿Í ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇϴ âÀÌ ¶á´Ù.
  2. ¸ð¹ÙÀÏ ¾Û¿¡¼­ ÀÔ·Â ¹ÞÀº »ç¿ëÀÚÀÇ Á¤º¸¸¦ POST ¹æ½ÄÀ¸·Î API ¼­¹ö·Î º¸³½´Ù.(SSL)
  3. À¯Àú ÀÎÁõ°ªÀ» °ËÁõÇÏ°í ÀÏÁ¤ ½Ã°£ÀÌ Áö³ª¸é ¸¸·áµÉ ¾×¼¼½º ÅäÅ«À» »ý¼ºÇÑ´Ù.
  4. ¹ß±Þ?ÂÀ? ¾×¼¼½º ÅäÅ«À» ¸ð¹ÙÀÏ ±â±â¿¡ ÀúÀåÇÑ´Ù. APIÅäÅ«°ú ¸¶Âù°¡Áö·Î º¸¾ÈÀÌ Àû¿ëµÇ´Â ¾ÈÀüÇÑ Àå¼Ò¿¡ º¸°üÇØ¾ß Çϸç, API ¼­ºñ½º¿¡ Á¢±ÙÇÒ ¶§ ÀÌ ÅäÅ«À» »ç¿ëÇÑ´Ù.
  5. ¾×¼¼½º ÅäÅ«ÀÌ ¸¸·áµÇ¸é ´õÀÌ»ó ÀÛµ¿ÇÏÁö ¾ÊÀ¸¸ç, ID ȤÀº ¸ÞÀÏ ÁÖ¼Ò¿Í ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇϴ âÀ» ´Ù½Ã ¶ç¿î´Ù.

OAuth2°¡ API º¸¾È¿¡ ÁÁÀº ÀÌÀ¯´Â APIÅ° ÀÚü¸¦ ¾ÈÀüÇÏÁö ¾ÊÀº ȯ°æ¿¡ ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ´ë½Å¿¡ ¾×¼¼½º ÅäÅ«À» »ý¼ºÇÏ¿© ¾ÈÀüÇÏÁö ¾ÊÀº ȯ°æ¿¡ Àӽ÷ΠÀúÀåÇسõ±â¸¸ ÇÏ¸é µÈ´Ù. °ø°ÝÀÚ°¡ ¾×¼¼½º ÅäÅ«¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÇ´õ¶óµµ ÀÏÁ¤ ½Ã°£ÀÌ Áö³ª¸é ¸¸·áµÇ±â ??¹®¿¡ ÀáÀçÀûÀÎ ÇÇÇظ¦ ÁÙÀÏ ¼ö ÀÖ´Ù. 
OAuth2¿¡¼­ API¿¡ Á¢±ÙÇÒ ¶§ ÇÊ¿äÇÑ ¾×¼¼½º ÅäÅ«À» ¹ß±Þ ¹Þ¾Ò´Ù¸é, ¸ð¹ÙÀÏ ±â±â ¾îµò°¡¿¡ ÀúÀåÀ» ÇØ¾ß ÇÑ´Ù. ÅäÅ« ÀúÀå¼Ò´Â °³¹ßÀ» ÁøÇàÇÏ´Â Ç÷§Æû¿¡ µû¶ó Á¤ÇØÁø´Ù. ¿¹¸¦ µé¾î ¾Èµå·ÎÀÌµå ¾ÛÀ» °³¹ßÇÏ°í ÀÖ´Ù¸é ¸ðµç ¾×¼¼½º ÅäÅ«À» SharedPreference¿¡ ÀúÀåÇÒ °ÍÀÌ´Ù. iOSÀÇ °æ¿ì ¾×¼¼½º ÅäÅ«À» Keychain¿¡ ÀúÀåÇÏ°Ô µÈ´Ù. ÀÌ¿¡ °üÇØ StackOverflow¿¡ Àß Á¤¸®µÈ ³»¿ëÀÌ ÀÖ´Ù.

¾×¼¼½º ÅäÅ«

¾×¼¼½º ÅäÅ«Àº JWT(JSON Web Token)¸¦ ÁÖ·Î »ç¿ëÇϴµ¥, JWT´Â ´ÙÀ½°ú °°Àº Ư¡À» °®´Â´Ù.

  • Ŭ¶óÀ̾ðÆ®·Î ¹ßÇàµÉ ¼ö ÀÖ´Ù.
  • ´ç½ÅÀÌ »ý¼ºÇß´Ù´Â »ç½ÇÀ» Áõ¸íÇÒ ¼ö ÀÖ´Ù.(¼­¸í)
  • ÀÏÁ¤ ½Ã°£ µÚ¿¡ ÀÚµ¿À¸·Î ¸¸·áµÈ´Ù.
  • JSONŸÀÔÀ¸·Î º¯¼ö Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Ù.
  • ¼­¹ö¿¡¼­ Äõ¸®ÇÏÁö ¾Ê¾Æµµ »ç¿ëÀÚ¸¦ ·ÎÄÿ¡¼­ °ËÁõÇÒ ¼ö Àֱ⠶§¹®¿¡ API È£ÃâÀÇ È½¼ö¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù.

JWT´Â ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î Ç×»ó ¾Ïȣȭ ¼­¸íÀ» »ç¿ëÇÑ´Ù(Cryptographically signed).

  • º¸¾ÈÀ» À§ÇØ ·£´ý ¹®ÀÚ¿­À» »ý¼ºÇÏ°í, API ¼­¹ö¿¡ ÀúÀåÇÑ´Ù. 40ÀÚ Á¤µµ¸é ÀûÇÕÇÏ´Ù.
  • »õ JWT¸¦ ¸¸µé ¶§ ÀÌ ¹®ÀÚ¿­À» JWT¶óÀ̺귯¸®·Î Àü´ÞÇÏ¿© ÀúÀåÇÒ JSONµ¥ÀÌÅÍ(ID, ±ÇÇÑ µî)°ú ÇÔ²² ÅäÅ«¿¡ ¼­¸íÇÑ´Ù.
  • ÅäÅ«ÀÌ »ý¼ºµÇ¸é ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³­´Ù.
    • header.claims.signature
    • Çì´õ¿Í Ŭ·¹ÀÓ ±×¸®°í ¼­¸íÀº base64·Î ÀÎÄÚµù µÈ ±ä ¹®ÀÚ¿­ ÇüÅ·Π³ªÅ¸³­´Ù.

¸ð¹ÙÀÏ Å¬¶óÀ̾ðÆ®¿¡¼­µµ JWT¿¡ ÀúÀåµÈ ³»¿ëÀ» º¼ ¼ö ÀÖ´Ù. JWT¶óÀ̺귯¸®°¡ ÀÖÀ¸¸é JWT³»ºÎÀÇ JSONµ¥ÀÌÅ͸¦ ½±°Ô È®ÀÎÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀúÀåµÈ µ¥ÀÌÅÍ´Â ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÇüÅ·Π³ªÅ¸³­´Ù.

{
  "user_id": "e3457285-b604-4990-b902-960bcadb0693",
  "scope": "can-read can-write"
}

JWT´Â ÅäÅ« ¸¸·á ±â´ÉÀ» ±âº»ÀûÀ¸·Î Áö¿øÇϱ⠶§¹®¿¡ ÅäÅ«¸¸À» °¡Áö°í ÅäÅ«ÀÇ À¯È¿¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ JWT ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù¸é APIÈ£Ãâ ¾øÀ̵µ ·ÎÄÿ¡¼­ JWTÀÇ À¯È¿¼ºÀ» °Ë»çÇÒ ¼ö ÀÖ´Ù. JWTÀÎÁõ ½Ã½ºÅÛÀº ¼­¹ö´Ü¿¡¼­µµ ÈǸ¢ÇÑ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº JWT¸¦ ¸ð¹ÙÀÏ ¾Û¿¡ ¹ß±ÞÇß´Ù°í °¡Á¤Çغ¸ÀÚ.

{
  "user_id": "e3457285-b604-4990-b902-960bcadb0693",
  "scope": "can-read can-write"
}

±×¸®°í ¸ð¹ÙÀÏ ¸Ö¿þ¾î³ª ÇØÄ¿°¡ ÅäÅ«À» ´ÙÀ½°ú °°ÀÌ Á¶ÀÛÇß´Ù.

{
  "user_id": "e3457285-b604-4990-b902-960bcadb0693",
  "scope": "can-read can-write can-delete"
}

À§¿Í °°ÀÌ »èÁ¦ ±ÇÇÑÀ» Á¶ÀÛÇÏ¿© ºÎ¿©ÇßÀ» °æ¿ì API ¼­¹ö¿¡¼­µµ µ¿ÀÛÇÒ °ÍÀΰ¡? ´äÀº ¾Æ´Ï´Ù. API ¼­¹ö°¡ JWT¸¦ ¼ö½ÅÇÏ°í °ËÁõÇÒ ¶§ ´ÙÀ½°ú °°Àº ÀÛ¾÷À» ¼öÇàÇϱ⠶§¹®ÀÌ´Ù.

  • ¼­¹ö¸¸ ¾Ë°í ÀÖ´Â ºñ¹Ð ¹®ÀÚ¿­À» »ç¿ëÇØ ÅäÅ«ÀÌ ÈѼյÇÁö ¾Ê¾Ò´ÂÁö üũÇÑ´Ù(¾Õ¼­ º¸¾Ò´ø ¾ÏÈ£¼­¸íÀ» ÀÌ¿ë).
    • JWT°¡ Á¶À۵Ǿú´Ù¸é ÀÌ ´Ü°è¸¦ Åë°úÇÏÁö ¸øÇÑ´Ù.
  • JWTÀÇ ¸¸·á ½Ã°£À» üũÇÏ¿© ¾ÆÁ÷ À¯È¿ÇÑ JWTÀÎÁö °ËÁõÇÑ´Ù.
    • ¿À·¡ µÈ JWT¸¦ ÀÌ¿ëÇØ API ¿äûÀ» ÇÑ´Ù¸é °ÅºÎµÈ´Ù.

JWTÀÇ ÀÌ·¯ÇÑ ±â´ÉÀº ÀÎÁõ / ¸¸·á / º¸¾ÈÀ» ¸Å¿ì °£°áÇÏ°Ô ¸¸µé¾î ÁØ´Ù. JWT¸¦ ÀÌ¿ëÇØ ¼­ºñ½º¸¦ °³¹ßÇÒ ¶§ ¸í½ÉÇØ¾ß ÇÒ Á¡Àº ¿ÀÁ÷ ÇϳªÀÌ´Ù. À¯ÃâµÇ¾îµµ »ó°ü¾ø´Â Á¤º¸¸¸ ÀúÀåÇÑ´Ù.

ÀÛµ¿¹æ½Ä

JWT process flow

  1. À¯Àú°¡ ¾ÛÀ» ½ÇÇà
  2. ¾ÛÀÌ ÀÎÁõ Á¤º¸¸¦ ¿ä±¸ÇÔ
    • OAuth2ÀÇ ¾ÏÈ£ ºÎ¿© ŸÀÔ ½ºÅ°¸¶¸¦ »ç¿ëÇØ »ç¿ëÀÚ ÀÎÁõÀ» Çϱ⠶§¹®¿¡ ID¿Í PW°¡ ÇÊ¿äÇÏ´Ù.
  3. »ç¿ëÀÚ°¡ ÀÎÁõ Á¤º¸¸¦ ÀÔ·ÂÇÔ
  4. ¾ÛÀÌ API ¼­¹ö·Î POST request¸¦ º¸³¿
    • OAuth2 ÇÁ·Î¼¼½º°¡ ½ÃÀ۵Ǵ ºÎºÐ
    • ´Ü¼øÈ÷ API ¼­¹ö·Î HTTP Post ¿äû¸¸ Àü¼Û
  5. API ¼­¹ö¿¡¼­ À¯Àú ÀÎÁõ
    • »ç¿ëÀÚÀÇ °èÁ¤°ú PW°¡ ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ
  6. API ¼­¹ö¿¡¼­ ¸ð¹ÙÀÏ ¾Û¿¡ ÀúÀåÇÒ JWT¸¦ »ý¼º
    • OAuth2 ÀÎÁõÀ» Åë°úÇ߱⠶§¹®¿¡ ¾×¼¼½º ÅäÅ«À» ¹ß±ÞÇØ ¸ð¹ÙÀÏ ¾ÛÀ¸·Î Àü´Þ
    • ID¿Í »ç¿ëÀÚ ±ÇÇÑ ±×¸®°í ¾Û¿¡¼­ ¹Ù·Î Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Â ¾î¶² Á¤º¸µç JSONŸÀÔÀ¸·Î ´ã´Â´Ù.
    • JWT¸¦ »ý¼ºÇßÀ¸¸é, ¾ÛÀ¸·Î ¾Æ·¡¿Í °°Àº ÇüÅÂÀÇ JSON Response¸¦ º¸³½´Ù.
    • {  
        "access_token":     "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJEUExSSTVUTEVNMjFTQzNER0xHUjBJOFpYIiwiaXNzIjoiaHR0cHM6Ly9hcGkuc3Rvcm1wYXRoLmNvbS92MS9hcHBsaWNhdGlvbnMvNWpvQVVKdFZONHNkT3dUVVJEc0VDNSIsImlhdCI6MTQwNjY1OTkxMCwiZXhwIjoxNDA2NjYzNTEwLCJzY29wZSI6IiJ9.ypDMDMMCRCtDhWPMMc9l_Q-O-rj5LATalHYa3droYkY",
        "token_type": "bearer",
        "expires_in": 3600
      }
      
    • JSON Response´Â ¼¼ °³ÀÇ Çʵ带 °®´Â´Ù. ù ¹ø° Çʵå´Â ¾×¼¼½º ÅäÅ«ÀÌ´Ù. ÀÌ ÅäÅ«Àº API ¿äû ½Ã ÀÎÁõÀ» ÇÒ ¶§ »ç¿ëÇÏ°Ô µÈ´Ù.
    • µÎ ¹ø° Çʵå´Â ÅäÅ« ŸÀÔÀÌ´Ù. ÀÌ°ÍÀº ¾Û¿¡ ¾î¶² Á¾·ùÀÇ ÅäÅ«À» Á¦°øÇß´ÂÁö ¾Ë·ÁÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¿©±â¼­´Â OAuth2ÀÇ Bearer TokenÀ» Á¦°øÇß´Ù.
    • ¼¼ ¹ø° Çʵå´Â ¸¸·á±âÇÑ ÇʵåÀÌ´Ù. ÀÌ Çʵå´Â ÃÊ ´ÜÀ§·Î Ç¥½ÃµÇ±â ¶§¹®¿¡ À§ ÅäÅ«Àº 3600ÃÊ(1½Ã°£)µÚ¿¡ ¸¸·áµÉ °ÍÀÌ´Ù.
    • Ŭ¶óÀ̾ðÆ® ´Ü¿¡¼­´Â JSON Response¸¦ ¹Þ¾Æ¿Í ¾×¼¼½º ÅäÅ«À» ÆÄ½Ì ÇÑ µÚ¿¡ ¾ÈÀüÇÑ ±â±â ³»ºÎÀÇ °ø°£¿¡ ÀúÀåÇÑ´Ù.
  7. ¾Û¿¡¼­ ¼­¹ö·Î ÀÎÁõµÈ ¿äûÀ» º¸³½´Ù.
    • ÀúÀåµÈ JWT¸¦ »ç¿ëÇØ HTTP ÀÎÁõ Çì´õ¸¦ ¸¸µé°í API ¿äûÀ» º¸³» »ç¿ëÀÚ¸¦ ÀÎÁõÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
    • ¿¹¸¦ µé¾î cURLÀ» ÀÌ¿ëÇØ Bearer ŸÀÔÀÇ ÅäÅ«À» º¸³½´Ù¸é ´ÙÀ½°ú °°Àº ÇüŸ¦ º¸ÀÏ °ÍÀÌ´Ù.
    • $ curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJEUExSSTVUTEVNMjFTQzNER0xHUjBJOFpYIiwiaXNzIjoiaHR0cHM6Ly9hcGkuc3Rvcm1wYXRoLmNvbS92MS9hcHBsaWNhdGlvbnMvNWpvQVVKdFZONHNkT3dUVVJEc0VDNSIsImlhdCI6MTQwNjY1OTkxMCwiZXhwIjoxNDA2NjYzNTEwLCJzY29wZSI6IiJ9.ypDMDMMCRCtDhWPMMc9l_Q-O-rj5LATalHYa3droYkY" https://api.example.com/v1/test
      
    • ¿©±â¿¡¼­ ÀÎÁõ Çì´õ ºÎºÐÀº ´ÙÀ½°ú °°´Ù.
    • Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJEUExSSTVUTEVNMjFTQzNER0xHUjBJOFpYIiwiaXNzIjoiaHR0cHM6Ly9hcGkuc3Rvcm1wYXRoLmNvbS92MS9hcHBsaWNhdGlvbnMvNWpvQVVKdFZONHNkT3dUVVJEc0VDNSIsImlhdCI6MTQwNjY1OTkxMCwiZXhwIjoxNDA2NjYzNTEwLCJzY29wZSI6IiJ9.ypDMDMMCRCtDhWPMMc9l_Q-O-rj5LATalHYa3droYkY
      
    • ÀÌ ¿äûÀ» ¹ÞÀº ¼­¹ö´Ü¿¡¼­´Â ´ÙÀ½°ú °°Àº È°µ¿À» ¼öÇàÇÏ°Ô µÈ´Ù.
      • HTTP ÀÎÁõ Çì´õ °ªÀ» °Ë»çÇÏ¿© Bearer°¡ µé¾îÀÖÀ½À» È®ÀÎÇÑ´Ù.
      • µÚ¿¡ µû¶ó¿À´Â ¹®ÀÚ¿­ °ªÀ» °¡Á®¿Í ¾×¼¼½º ÅäÅ«À¸·Î ÀνÄÇÑ´Ù.
      • JWT¶óÀ̺귯¸®¸¦ »ç¿ëÇØ ¾×¼¼½ºÅäÅ«ÀÌ À¯È¿Çϸç, ¼­¸íµÇ¾îÀÖ°í, ¸¸·áµÇÁö ¾Ê¾Ò´ÂÁö °Ë»çÇÏ°í °ËÁõÇÑ´Ù.
      • »ç¿ëÀÚÀÇ ID¿Í ±ÇÇÑÀ» È®ÀÎÇÑ´Ù.
      • »ç¿ëÀÚÀÇ °èÁ¤À» µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ °¡Á®¿Â´Ù.
      • ¸ðµç °ÍÀÌ Åë°úµÈ´Ù¸é API ¿äû¿¡ ¸Â´Â ÀÀ´äÀ» ÇØÁØ´Ù.