SAML°ú OAuthÀÇ Â÷ÀÌ
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¸¦ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.
- www.company.com¿¡ ·Î±×ÀÎ
- www.company.com ³»ÀÇ ÃâÀå ¿¹¾à ¼ºñ½º ¸µÅ© Ŭ¸¯
- www.booking.com »çÀÌÆ®·Î redirection
- www.booking.com¿¡¼ ÇØ´ç »ç¿ëÀÚ°¡ www.company.com¿¡¼ ÀÎÁõµÇ¾ú´ÂÁöÀÇ ¿©ºÎ üũ
- ÀÎÁõµÈ »ç¿ëÀÚÀÏ °æ¿ì ¿¹¾à ¼ºñ½º ȸéÀ» Ç¥½Ã
À§ÀÇ Workflow´Â IdP (www.company.com)¿¡¼ ½ÃÀ۵ǾúÀ¸¹Ç·Î IdP-initiated SSO¶ó°í ºÒ¸°´Ù. ÀÌ¿Í ´Ù¸£°Ô SP¿¡¼ºÎÅÍ ½ÃÀÛÇÏ´Â SP-initiated SSOµµ »ý°¢ÇÒ ¼ö ÀÖ´Ù.
- ºÏ¸¶Å©¸¦ ÀÌ¿ëÇØ www.booking.com »çÀÌÆ®ÀÇ ¿¹¾à ¼ºñ½º ÆäÀÌÁö¿¡ Á¢±Ù
- www.booking.com¿¡¼´Â ÇØ´ç »ç¿ëÀÚ°¡ ¾ÆÁ÷ ·Î±×ÀÎÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ÀÎÁõ Á¤º¸ ¿äû°ú ÇÔ²² www.company.com »çÀÌÆ®·Î redirection
- www.company.com¿¡¼ »ç¿ëÀÚ ÀÎÁõ (·Î±×ÀÎ)
- ÀÎÁõ °á°ú¿Í ÇÔ²² www.booking.comÀ¸·Î redirection
- 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ÀÌ ´ã´çÇÏ°Ô µÈ´Ù. ¿¹»óµÇ´Â ½Ã³ª¸®¿À´Â ¾Æ·¡¿Í °°´Ù.
- »ç¿ëÀÚ°¡ ¸Þ½ÅÀú ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Ù°¡ ÆäÀ̽ººÏÀÇ Ä£±¸ ¸®½ºÆ®¸¦ °¡Á®¿Í¾ß ÇÒ °æ¿ì, ¸ÕÀú À¥ ¸Þ½ÅÀú´Â backend channelÀ» ¿¾î Facebook¿¡°Ô request tokenÀ» ¿äûÇÑ´Ù.
- À¥ ¸Þ½ÅÀú´Â »ç¿ëÀÚ¸¦ Facebook ÀÎÁõ ÆäÀÌÁö·Î redirection ½ÃŲ´Ù. ÀÌ ¶§ À¥ ¸Þ½ÅÀú´Â ÀÎÁõ ÈÄ µÇµ¹¾Æ¿Í¾ß ÇÒ callback url ¹× FacebookÀ¸·ÎºÎÅÍ ¹ß±Þ¹ÞÀº request token µîÀÇ Á¤º¸¸¦ ÆĶó¹ÌÅÍ·Î ³Ñ±ä´Ù.
- »ç¿ëÀÚ´Â Facebook ÀÎÁõ ÆäÀÌÁö¿¡ ÀÚ½ÅÀÇ ID¿Í Æнº¿öµå¸¦ ÀÔ·ÂÇÏ°í ·Î±×ÀÎÀ» ÇÑ´Ù. Facebook ÀÎÁõ ÆäÀÌÁö´Â ÀÎÁõÀÌ ¼º°øÇÏ¸é »ç¿ëÀÚ¸¦ callback url·Î redirection ½ÃŲ´Ù.
- ¸Þ½ÅÀú´Â ´Ù½Ã backend channelÀ» ÅëÇØ Facebook¿¡°Ô access tokenÀ» ¿äûÇÏ¿© ¹ß±Þ¹Þ´Â´Ù.
- ¸Þ½ÅÀú´Â ÀÌÈÄÀÇ ¸ðµç 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ÀÌ ¸±¸®ÁîµÇ¸é Á» ´õ źźÇÑ º¸¾È ü°è¸¦ °®Ãá ½ºÆåÀÌ µÇ±â¸¦ ±â´ëÇغ»´Ù.
[Ãâó] SAML°ú OAuthÀÇ Â÷ÀÌ|ÀÛ¼ºÀÚ ³Ê±¼³Ê±¼