ÆÁ¾ØÅ¥
2017.08.19 / 12:57

SAML°ú OAuthÀÇ Â÷ÀÌ

µðÆÌ
Ãßõ ¼ö 149

1. °³¿ä

 

Web Service º¸¾È°ú °°Àº ÁÖÁ¦¸¦ ´Ù·ç´Ù º¸¸é Ç×»ó ºÎµúÈ÷°Ô µÇ´Â °ÍÀÌ ¹Ù·Î SAML, OAuth µî°ú °°Àº ÀÎÁõ ºÎºÐÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. º¸Åë ÀÌ·¯ÇÑ ¸Þ½ÃÁöÀÇ ±³È¯¿¡´Â Å©°Ô 3°¡Áö º¸¾È ¿µ¿ªÀÌ ´Ù·ç¾îÁø´Ù°í º¼ ¼ö ÀÖ´Ù.

  • µ¥ÀÌÅÍ ¹«°á¼º
  • µ¥ÀÌÅÍ ±â¹Ð¼º
  • AAA (ÀÎÁõ/Àΰ¡/°¨»ç)

ÀÌ Áß µ¥ÀÌÅÍ ¹«°á¼ºÀ̳ª µ¥ÀÌÅÍ ±â¹Ð¼ºÀº ÀüÀÚ ¼­¸í, µ¥ÀÌÅÍ ¾Ïȣȭ, SSL µî°ú °°Àº ä³Î ¾Ïȣȭ µîÀÇ ±â¼úÀ» ÅëÇؼ­ ±¸ÇöµÈ´Ù. ¹Ý¸é SAMLÀ̳ª OAuth µîÀº ÀÎÁõ ¹× Àΰ¡¿Í °ü·ÃµÈ ÇÁ·ÎÅäÄÝÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.

 

2. SAML

 

SAMLÀº ±âº»ÀûÀ¸·Î Identity FederationÀÇ °³³ä¿¡¼­ºÎÅÍ ½ÃÀÛÇÑ´Ù. (ÀÚ¼¼ÇÑ ¼³¸íÀº SAML °³³ä ¹®¼­ ÂüÁ¶) Identity FederationÀº ¼­·Î ´Ù¸¥ ±â¾÷ ȤÀº µµ¸ÞÀÎ °£ÀÇ SSO ¿¬°è·ÎºÎÅÍ Ãâ¹ßÇÑ´Ù. ¿¹¸¦ µé¾î A ȸ»ç¿¡ ´Ù´Ï´Â ¾î¶² »ç¶÷ÀÌ ÃâÀåÀ» °¡·Á°í Çϴµ¥ A ȸ»ç´Â B ¿©Çà»ç¿Í ÆÄÆ®³Ê½Ê °ü°Ô¸¦ ¸Î°í ¸ðµç È£ÅÚ ¹× ºñÇà±â ¿¹¾àÀº B ¿©Çà»ç°¡ ´ëÇàÇÏ´Â ½Ã³ª¸®¿À¸¦ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù. ÀÌ ¶§ A ȸ»ç Á÷¿øÀº A ȸ»çÀÇ »çÀÌÆ® www.company.com¿¡ ÀÎÁõÀ» ÇÏ¸é º°µµÀÇ ·Î±×ÀÎ ¾øÀÌ B ¿©Çà»çÀÇ ¿¹¾à »çÀÌÆ® www.booking.com¿¡ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù°í ÇÏÀÚ. ÀÌ °æ¿ì A ȸ»ç´Â »ç¿ëÀÚÀÇ ÀÎÁõÀ» ´ã´çÇÏ´Â ÁÖü°¡ µÇ°í, B ¿©Çà»ç´Â A ȸ»ç¿¡¼­ ÀÎÁõÇÑ »ç¿ëÀÚ¸¦ ½Å·ÚÇÏ°í ¿¹¾à ¼­ºñ½º¸¦ Á¦°øÇÏ´Â ÁÖü°¡ µÈ´Ù. ¿©±â¼­ A ȸ»ç´Â »ç¿ëÀÚÀÇ ÀÎÁõ ¹× ÀÎÁõ ¿©ºÎ °á°ú Á¦°øÀ» ´ã´çÇϹǷΠIdentity Provider (IdP)¶ó ºÒ¸®°í, B ¿©Çà»ç´Â Aȸ»ç¿¡¼­ ÀÎÁõÇÑ »ç¿ëÀÚ¿¡°Ô ¿¹¾à ¼­ºñ½º¸¦ Á¦°øÇϹǷΠService Provider (SP)¶ó ºÒ¸°´Ù.

 

À§ÀÇ ½Ã³ª¸®¿À¸¦ ¹ÙÅÁÀ¸·Î ´ÙÀ½°ú °°Àº A ȸ»ç Á÷¿øÀÇ È£ÅÚ ¹× ºñÇà±â ¿¹¾à Workflow¸¦ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.

  1. www.company.com¿¡ ·Î±×ÀÎ
  2. www.company.com ³»ÀÇ ÃâÀå ¿¹¾à ¼­ºñ½º ¸µÅ© Ŭ¸¯
  3. www.booking.com »çÀÌÆ®·Î redirection
  4. www.booking.com¿¡¼­ ÇØ´ç »ç¿ëÀÚ°¡ www.company.com¿¡¼­ ÀÎÁõµÇ¾ú´ÂÁöÀÇ ¿©ºÎ üũ
  5. ÀÎÁõµÈ »ç¿ëÀÚÀÏ °æ¿ì ¿¹¾à ¼­ºñ½º È­¸éÀ» Ç¥½Ã

À§ÀÇ Workflow´Â IdP (www.company.com)¿¡¼­ ½ÃÀ۵ǾúÀ¸¹Ç·Î IdP-initiated SSO¶ó°í ºÒ¸°´Ù. ÀÌ¿Í ´Ù¸£°Ô SP¿¡¼­ºÎÅÍ ½ÃÀÛÇÏ´Â SP-initiated SSOµµ »ý°¢ÇÒ ¼ö ÀÖ´Ù.

  1. ºÏ¸¶Å©¸¦ ÀÌ¿ëÇØ www.booking.com »çÀÌÆ®ÀÇ ¿¹¾à ¼­ºñ½º ÆäÀÌÁö¿¡ Á¢±Ù
  2. www.booking.com¿¡¼­´Â ÇØ´ç »ç¿ëÀÚ°¡ ¾ÆÁ÷ ·Î±×ÀÎÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ÀÎÁõ Á¤º¸ ¿äû°ú ÇÔ²² www.company.com »çÀÌÆ®·Î redirection
  3. www.company.com¿¡¼­ »ç¿ëÀÚ ÀÎÁõ (·Î±×ÀÎ)
  4. ÀÎÁõ °á°ú¿Í ÇÔ²² www.booking.comÀ¸·Î redirection
  5. www.booking.comÀÇ ¿¹¾à ¼­ºñ½º ÆäÀÌÁö¿¡¼­ »ç¿ëÀÚ ÀÎÁõ ¿©ºÎ üũ ÈÄ ÆäÀÌÁö Ç¥½Ã

¿©±â¼­ www.company.com°ú www.booking.comÀº ¼­·Î ÀÎÁõ ¿äû ¹× °á°ú Á¤º¸¸¦ ÁÖ°í ¹Þ¾Æ¾ß ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ÀÎÁõ °ü·Ã Á¤º¸ ±³È¯¿¡ ¾²ÀÌ´Â ÇÁ·ÎÅäÄÝÀÌ ¹Ù·Î SAMLÀÌ´Ù. SAMLÀº ´Ù¾çÇÑ ¹æ¹ýÀ» ÅëÇÏ¿© ÀÎÁõ Á¤º¸¸¦ ±³È¯ÇÒ ¼ö Àִ â±¸¸¦ Á¦°øÇÑ´Ù.

 

3. OAuth

 

OAuth´Â SAML°ú ´Þ¸® Service Consumer¿Í Service Provider¶ó´Â °³³äÀ» ´ã°í ÀÖ´Ù. ¿¹¸¦ µé¾î FacebookÀ» »ý°¢ÇØ º¸ÀÚ. FacebookÀº ÀÚ½ÅÀÌ °ü¸®ÇÏ°í ÀÖ´Â »ç¿ëÀÚµéÀÇ Social Network Á¤º¸¸¦ API·Î Á¦°øÇÏ°í °³¹ßÀÚµéÀº ÀÌ·¯ÇÑ API¸¦ »ç¿ëÇÏ¿© ´Ù¾çÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ¾î¶² »ç¶÷ÀÌ Facebook°ú ¿¬µ¿µÇ´Â À¥ ¸Þ½ÅÀú ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇߴµ¥ ÀÌ ¸Þ½ÅÀú ÇÁ·Î±×·¥¿¡¼­´Â FacebookÀÇ Ä£±¸ ¸®½ºÆ®¸¦ API¸¦ ÅëÇØ ºÒ·¯¿Í ÀÚ½ÅÀÇ ´ëÈ­ »ó´ë ¸ñ·Ï¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­, ÀÌ ½Ã³ª¸®¿À¿¡¼­´Â 3°¡Áö Tier°¡ Á¸ÀçÇÔÀ» ¾Ë ¼ö ÀÖ´Ù.

 

»ç¿ëÀÚ -- ¸Þ½ÅÀú -- Facebook

 

ÀÌ °æ¿ì, ¿¹»óµÇ´Â »ç¿ëÀÚ ÀÎÁõ°ú °ü·ÃµÈ ¿ä±¸ »çÇ×µéÀº ´ÙÀ½°ú °°´Ù.

  • Facebook API´Â ¸Þ½ÅÀú°¡ API¸¦ È£ÃâÇßÀ» ¶§, ÆĶó¹ÌÅÍ·Î ³Ñ¾î¿À´Â »ç¿ëÀÚ°¡ Facebook¿¡ ÀÎÁõµÈ »ç¿ëÀÚÀÎÁö, ±×¸®°í ÇØ´ç Á¤º¸¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» °¡Áø »ç¿ëÀÚÀÎÁö¸¦ °Ë»çÇØ¾ß ÇÑ´Ù. (»ç¿ëÀÚ ÀÎÁõ/Àΰ¡)
  • ¸Þ½ÅÀú ÇÁ·Î±×·¥Àº »ç¿ëÀÚÀÇ Facebook ID ¹× ºñ¹Ð¹øÈ£¸¦ ¾Ë ¼ö ¾ø¾î¾ß ÇÑ´Ù.

ÀÌ µÎ °¡Áö ¿ä°ÇÀ» ¸¸Á·½ÃÅ°±â À§Çؼ­ ¸ÕÀú »ç¿ëÀÚ ÀÎÁõÀº FacebookÀÌ ´ã´çÇÏ°Ô µÈ´Ù. ¿¹»óµÇ´Â ½Ã³ª¸®¿À´Â ¾Æ·¡¿Í °°´Ù.

  1. »ç¿ëÀÚ°¡ ¸Þ½ÅÀú ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Ù°¡ ÆäÀ̽ººÏÀÇ Ä£±¸ ¸®½ºÆ®¸¦ °¡Á®¿Í¾ß ÇÒ °æ¿ì, ¸ÕÀú À¥ ¸Þ½ÅÀú´Â backend channelÀ» ¿­¾î Facebook¿¡°Ô request tokenÀ» ¿äûÇÑ´Ù.
  2. À¥ ¸Þ½ÅÀú´Â »ç¿ëÀÚ¸¦ Facebook ÀÎÁõ ÆäÀÌÁö·Î redirection ½ÃŲ´Ù. ÀÌ ¶§ À¥ ¸Þ½ÅÀú´Â ÀÎÁõ ÈÄ µÇµ¹¾Æ¿Í¾ß ÇÒ callback url ¹× FacebookÀ¸·ÎºÎÅÍ ¹ß±Þ¹ÞÀº request token µîÀÇ Á¤º¸¸¦ ÆĶó¹ÌÅÍ·Î ³Ñ±ä´Ù.
  3. »ç¿ëÀÚ´Â Facebook ÀÎÁõ ÆäÀÌÁö¿¡ ÀÚ½ÅÀÇ ID¿Í Æнº¿öµå¸¦ ÀÔ·ÂÇÏ°í ·Î±×ÀÎÀ» ÇÑ´Ù. Facebook ÀÎÁõ ÆäÀÌÁö´Â ÀÎÁõÀÌ ¼º°øÇÏ¸é »ç¿ëÀÚ¸¦ callback url·Î redirection ½ÃŲ´Ù.
  4. ¸Þ½ÅÀú´Â ´Ù½Ã backend channelÀ» ÅëÇØ Facebook¿¡°Ô access tokenÀ» ¿äûÇÏ¿© ¹ß±Þ¹Þ´Â´Ù.
  5. ¸Þ½ÅÀú´Â ÀÌÈÄÀÇ ¸ðµç Facebook API È£Ãâ¿¡ ¹ß±Þ¹ÞÀº access tokenÀ» ³Ñ±â°í Facebook¿¡¼­´Â access tokenÀÌ Æó±âµÉ ¶§±îÁö »ç¿ëÀÚ ¹× ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÎÁõµÈ °ÍÀ¸·Î °£ÁÖÇÏ°í ¸Þ½ÅÀúÀÇ API È£ÃâÀ» Á¤´çÇÑ °ÍÀ¸·Î ÆÇ´ÜÇÏ¿© °á°ú¸¦ ¸®ÅÏÇÑ´Ù.

À§ÀÇ ÇÁ·Î¼¼½º¸¦ ±×¸²À¸·Î Ç¥ÇöÇÏ¸é ´ÙÀ½°ú °°´Ù. (Ãâó: http://www.oauth.net/)

 

(À§ ±×¸²Àº OAuth 1.0 ¹öÀüÀ¸·Î ÇöÀç OAuth 2.0ÀÌ ÀÛ¾÷ ÁøÇà ÁßÀÌ´Ù.)

 

4. SAML°ú OAuthÀÇ ºñ±³

 

SAMLÀº ¸ÖƼ µµ¸ÞÀÎ °£ÀÇ SSO ¼º°ÝÀÌ °­ÇÏ´Ù. À§ÀÇ ¿¹Á¦¿¡¼­Ã³·³ www.company.com¿¡¼­ ÀÎÁõµÈ »ç¿ëÀÚ¶ó¸é www.booking.com¿¡¼­´Â www.company.comÀ» ½Å·ÚÇϹǷÎ, ÀÌ »çÀÌÆ®¿¡¼­ ÀÎÁõµÈ »ç¿ëÀÚ ¿ª½Ã ½Å·ÚÇÏ´Â »ç¿ëÀÚ·Î ÆÇ´ÜÇÏ¿© ÀÎÁõ 󸮸¦ ÇØ ÁÖ´Â °ÍÀÌ´Ù. ±×·±µ¥ ¿©±â¼­´Â www.booking.com°ú www.company.com °£¿¡´Â ¾Æ¹«·± »óÈ£ÀÛ¿ëÀÌ ¾øÀ» ¼öµµ ÀÖ´Ù. Áï Identity¸¸ ¼­·Î °øÀ¯ÇÒ »Ó ÀüÇô µ¶¸³µÈ °³Ã¼·Î¼­ ¼­·Î ´Ù¸¥ À¯ÇüÀÇ ¼­ºñ½º¸¦ »ç¿ëÀÚ¿¡°Ô Á¦°øÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. Áï »ç¿ëÀÚ¿Í www.company.com, ȤÀº »ç¿ëÀÚ¿Í www.booking.com »çÀÌ¿¡ Á÷Á¢ÀûÀÎ °ü°è°¡ ¸Î¾îÁö´Â °ÍÀÌ´Ù.

 

¹Ý¸é OAuth¿¡¼­´Â »ç¿ëÀÚ -- ¸Þ½ÅÀú -- Facebook ÀÌ·¸°Ô 3´Ü°èÀÇ dependency°¡ Á¸ÀçÇÏ°Ô µÈ´Ù. »ç¿ëÀÚ´Â Facebook¿¡ Á÷Á¢ Á¢±ÙÇϰųª »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. ´ÜÁö ¸Þ½ÅÀú ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÌ¿ëÇÏ´Ù º¸´Ï, Facebook¿¡¼­ Á¦°øÇÏ´Â ¼­ºñ½º¸¦ ¸Þ½ÅÀú°¡ Á¦°ø¹Þ¾Æ¾ß ÇÏ´Â °ÍÀÌ´Ù.

 

ÀÌ·¸°Ô ÇϳªÀÇ ¾ÖÇø®ÄÉÀ̼Ç(Service Consumer)ÀÌ ¶Ç ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼Ç(Service Provider)¸¦ »ç¿ëÇÏ´Â °ü°è°¡ »ý±â´Ù º¸´Ï Service Provider ÀÔÀå¿¡¼­´Â Service Consumer¸¦ ÀÎÁõ/Àΰ¡ÇØ¾ß ÇÏ´Â Çʿ伺ÀÌ »ý±â°Ô µÈ´Ù. Áï, Service Consumer°¡ ¿äûÇÏ´Â »ç¿ëÀÚ Á¤º¸°¡ ÀÖ´Ù¸é ÀÌ »ç¿ëÀÚ°¡ ÀÎÁõ/Àΰ¡µÈ »ç¿ëÀÚÀÎÁö¸¦ °Ë»çÇÏ´Â °Í»Ó¸¸ ¾Æ´Ï¶ó, Service Consumer ÀÚü°¡ ÀÎÁõ/Àΰ¡µÈ ¾ÖÇø®ÄÉÀ̼ÇÀÎÁöµµ È®ÀÎÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ÀÎÁõÀÇ °úÁ¤Àº access tokenÀÌ ¹ß±ÞµÇ´Â ½ÃÁ¡¿¡ º¸Åë ÀÌ·ç¾îÁø´Ù.

 

¹°·Ð ¾ÖÇø®ÄÉÀÌ¼Ç °£ÀÇ ¼­ºñ½º °ø±Þ/¼Òºñ °ü°è¿¡¼­µµ SAMLÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ SAML ÀÚü°¡ ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ ÀÎÁõ ³»¿ëÀ» Æ÷ÇÔÇÏ°í ÀÖÁö´Â ¾Ê´Ù. µû¶ó¼­, SAMLÀÌ Á» ´õ ¹ü¿ëÀûÀÎ Ãø¸éÀÇ »ç¿ëÀÚ SSO¸¦ ÀǹÌÇÑ´Ù¸é, OAuth´Â Service Consumer - Provider¿¡ ƯȭµÈ »ç¿ëÀÚ ¹× ¾ÖÇø®ÄÉÀÌ¼Ç ÀÎÁõ ÇÁ·ÎÅäÄÝÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù.

 

5. ±âŸ

 

2009³â¿¡ º»ÀÎÀÌ ÀÏÇÏ°í ÀÖ´ø ¸ð ÇÁ·ÎÀèÆ®¿¡¼­ OAuth ÇÁ·ÎÅäÄÝÀ» ÇÁ·ÎÁ§Æ® ¿ä±¸»çÇ׿¡ ¸Â°Ô º¯ÇüÇÏ¿© »ç¿ëÀÚ ¹× ¾ÖÇø®ÄÉÀÌ¼Ç ÀÎÁõÀ» ó¸®ÇÏ´Â ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé°í ÀÖ¾ú´Ù. ±×·±µ¥ °©ÀÚ±â OAuthÀÇ Security holeÀÌ ¹ß°ßµÇ¾î ±¸±Û µîÀÌ ¸ðµÎ OAuth ¼­ºñ½º¸¦ Æó¼âÇÏ´Â »çÅ°¡ ÀϾ¾ú´Ù. ±×¸¸Å­ OAuth´Â ¾ÆÁ÷ ¹Ì¼º¼÷ÇÑ ´Ü°è¿¡ ÀÖ°í ÇöÀç ¸¹Àº ¿åÀ» ¸Ô°í ÀÖ´Â °ÍÀ¸·Î º¸¿©Áø´Ù. ¹Ý¸é SAMLÀº ¸¹Àº °÷¿¡¼­ ÀÌ¹Ì »ó¿ëÈ­°¡ µÇ¾î ÀÖ°í, È°¿ëµÇ°í ÀÖ´Ù.

 

¾îÂî µÇ¾úµç, OAuth 2.0ÀÌ ¸±¸®ÁîµÇ¸é Á» ´õ źźÇÑ º¸¾È ü°è¸¦ °®Ãá ½ºÆåÀÌ µÇ±â¸¦ ±â´ëÇغ»´Ù.