ÃֽŠ°Ô½Ã±Û(JAVA)
2017.08.19 / 11:31

SAML ±â¹ÝÀÇ web sso ¿ø¸® Á¤¸®

µðÆÌ
Ãßõ ¼ö 339

Single Sign OnÀ» Áö¿øÇϱâ À§ÇÑ ÇÁ·ÎÅäÄÝÀ̳ª ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖ´Ù.

±×Áß ´ëÇ¥ÀûÀÎ ¹æ¹ýÀ¸·Î CAS,SAML,OAuthµîÀÌ Àִµ¥, CAS´Â Äí±â¸¦ ±â¹ÝÀ¸·Î Çϱ⠶§¹®¿¡ °°Àº µµ¸ÞÀθí (xxx.domain.com yyy.domain.com) »çÀÌ¿¡¼­¸¸ SSO°¡ °¡´ÉÇÏ´Ù. (±×¸¸Å­ ±¸Çöµµ ½±´Ù.) OAuth´Â ÇöÀç B2CÂÊ¿¡ ¸¹ÀÌ »ç¿ëµÇ´Â ÇÁ·ÎÅäÄÝÀÌ°í, ±×¸®°í ¸¶Áö¸·À¸·Î SAML ÀÖ´Ù. cross domain°£ SSO ±¸ÇöÀÌ °¡´ÉÇϸç, OAuth ¸¸Å­À̳ª ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Ù. 


SAMLÀº ¾î¶² ±¸Çöü°¡ ¾Æ´Ï¶ó SSOµî(²À SSO¸¸Àº ¾Æ´Ô)À» ±¸ÇöÇϱâ À§ÇÑ XML ½ºÆåÀÌ´Ù.

HTTP GET, POST ¶Ç´Â SOAP À¥¼­ºñ½º µî ¿©·¯°¡Áö ¹æ¹ýÀ¸·Î ±¸ÇöµÉ ¼ö ÀÖÀ¸¸ç, ¿©±â¼­´Â HTTP Post¸¦ ÀÌ¿ëÇÑ SSO ¿ø¸®¿Í ¼Ö·ç¼Ç ¼³°è½Ã À¯ÀÇ »çÇ×À» ¼³¸íÇÑ´Ù.


1. Site Sp A·Î Ãʱ⠷α×ÀÎ





    1. Browser¿¡¼­ »çÀÌÆ® SpA·Î Á¢¼ÓÇÑ´Ù.
    2. »çÀÌÆ® SpA¿¡´Â ·Î±×ÀÎÀÌ µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ (¼¼¼ÇÀÌ ¾ø¾î¼­). SpA¿¡¼­´Â SAML request¸¦ ¸¸µé¾î¼­, Browser¿¡°Ô·Î redirect URLÀ» º¸³½´Ù.
    3. Browser´Â redirect URL¿¡ µû¶ó IdP¿¡ Á¢¼ÓÇÏ°í, Idp¿¡¼­ login formÀ» ³Ö°í log inÀ» ÇÑ´Ù. À̶§, IdP¿Í Brower »çÀÌ¿¡ HttpSession ¶Ç´Â Cookie·Î Login¿¡ ´ëÇÑ Á¤º¸¸¦ ±â·ÏÇÑ´Ù. ±×¸®°í ´Ù½Ã »çÀÌÆ® SpA·ÎÀÇ SAML response¸¦ Æ÷ÇÔÇÑ redirect URLÀ» browser·Î Àü¼ÛÇÑ´Ù.
    4. Browser´Â SAML reponse¸¦ °¡Áö°í SpA·Î Á¢¼ÓÇϸé, SpA¿¡´Â ÀÎÁõµÈ Á¤º¸¸¦ °¡Áö°í ·Î±×ÀΠ󸮸¦ ÇÑ´Ù. ¡Ø ÀÌ °úÁ¤¿¡¼­´Â ¹Ù·Î »çÀÌÆ® SpAÀÇ »ç¿ëÀÚ ÆäÀÌÁö(¿¹¸¦ µé¾î /home)µîÀ¸·Î °¡´Â °ÍÀÌ ¾Æ´Ï¶ó, SAML¿¡ ÀÇÇؼ­ ¹Ì¸® Á¤ÀÇÇÑ SpAÀÇ SAML response ó¸® URL·Î °¬´Ù°¡ SAML response¸¦ 󸮰¡ ³¡³ª¸é ÀÎÁõ 󸮸¦ ÇÑÈÄ, »ç¿ëÀÚ ÆäÀÌÁö(/home)À¸·Î ´Ù½Ã redirectÇÑ´Ù.

2. Site Sp A·Î ·Î±×ÀÎµÈ »óÅ¿¡¼­ Site Sp B·Î ·Î±×ÀÎ




  1. »çÀÌÆ® SpA¿¡¼­ ·Î±×ÀÎµÈ »óÅ¿¡¼­ SpB¿¡ Á¢¼ÓÇÑ´Ù.
  2. »çÀÌÆ® SpB´Â ·Î±×ÀÎÀÌ µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡, SAML ¸Þ½ÃÁö¸¦ ¸¸µé¾î¼­ IdPÀÇ login fromÀ¸·Î redirect URLÀ» º¸³½´Ù.
  3. ºê¶ó¿ìÁ®´Â redirect URLÀ» µû¶ó¼­ IdP¿¡ Á¢¼ÓÀ» ÇÑ´Ù. IdP¿¡ Á¢¼ÓÀ» ÇÏ¸é ¾ÕÀÇ °úÁ¤¿¡¼­ ÀÌ¹Ì Session ¶Ç´Â Cookie°¡ ¸¸µé¾îÁ® Àֱ⠶§¹®¿¡ º°µµÀÇ ·Î±×ÀÎ ÆûÀ» ¶çÀ§Áö ¾Ê°í, SAML response message¿Í ÇÔ²², SpB·ÎÀÇ redirect URLÀ» Àü¼ÛÇÑ´Ù. 
  4. Browser´Â Sp B¿¡ ÀÎÁõµÈ Á¤º¸¸¦ °¡Áö°í ·Î±×ÀÎÇÑ´Ù.

 

¼Ö·ç¼Ç°ú ¼³°è½Ã À¯ÀÇ »çÇ×


¿©±â¼­ µÎ °¡Áö ±â¼úÀûÀÎ À̽´°¡ ¹ß»ýÇϴµ¥ 

ù¹ø°´Â IdP¿¡´Â ´ë±Ô¸ð »ç¿ëÀÚ¸¦ Áö¿øÇÒ °æ¿ì, Session Á¤º¸¸¦ ¾î¶»°Ô ºÐ»ê ÀúÀåÇÒ°ÍÀΰ¡ÀÌ´Ù.

WSO2 Identity serverÀÇ °æ¿ì¿¡´Â °¢ instanceÀÇ memory¿¡ ÀÌ session Á¤º¸¸¦ ÀúÀåÇÏ°í, ÀÚü clustering feature¸¦ ÀÌ¿ëÇÏ¿© ÀÌ sessionÀ» »óÈ£ º¹Á¦ÇÑ´Ù. Oracle WebLogicÀ̳ª Apache Tomcat clusterÀÇ Http session clustering°ú °°Àº ¿ø¸®ÀÌ´Ù.

ÀÌ °æ¿ì¿¡ °¢ instanceÀÇ ¸Þ¸ð¸® size¿¡ µû¶ó ÀúÀåÇÒ ¼ö ÀÖ´Â sessionÀÇ ¼öÀÇ ÇѰ踦 °¡Áö°Ô µÇ°í, instance°£ session º¹Á¦·Î ÀÎÇÏ¿©, Àå¾Ö ÀüÆÄ µîÀÇ °¡´É¼ºÀ» °¡Áö°Ô µÈ´Ù.

±×·¡¼­ ShibbolethÀÇ °æ¿ì¿¡´Â ÀÌ Session Á¤º¸¸¦ º°µµÀÇ terracotta¿Í °°Àº data grid¿¡ ÀúÀåÇϵµ·Ï ÇÏ¿©, È®À强À» º¸ÀåÇÒ ¼ö ÀÖ´Ù.

µÎ¹ø°´Â ·Î±× ¾Æ¿ô¿¡ ´ëÇÑ ¹®Á¦ÀδÙ.

Sp A³ª Sp B¿¡ SAMLÀ» ÀÌ¿ëÇÑ Ãʱâ ÀÎÁõÀÌ ¼º°øÇÑ °æ¿ì, Á¦ ·Î±×ÀÎ(ÀÎÁõ)À» ¸·±â À§Çؼ­ ÀÚüÀûÀ¸·Î HttpSessionµîÀ» »ç¿ëÇÏ¿©, º°µµÀÇ log in sessionÀ» À¯ÁöÇØ¾ß Çϴµ¥, ÀÌ°æ¿ì Sp A,Sp BÀÇ Session Time out ½Ã°£ÀÌ ´Ù¸¦ ¼ö Àֱ⠶§¹®¿¡, ÇÑ »çÀÌÆ®¿¡¼­ log outÀÌ µÈ °æ¿ì Àüü »çÀÌÆ®¿¡ °ÉÃļ­ log outÀÌ ¾ÈµÉ ¼ö ÀÖ´Â incosistency ¹®Á¦°¡ ¹ß»ýÇÑ´Ù.

±×·¡¼­ WSO2 identity serverÀÇ °æ¿ì¿¡´Â º°µµÀÇ logout URLÀ» Á¤ÀÇÇÏ¿©, IdP¿¡¼­ log outÀ» ÇÑ°æ¿ì¿¡ Àüü »çÀÌÆ®¿¡¼­ log outÀ» ½ÃÅ°´Â global log out ±â´ÉÀ» Á¦°øÇÑ´Ù.


SAML ±â¹ÝÀÇ SSO ¼Ö·ç¼ÇÀº ´ëÇ¥ÀûÀ¸·Î

simplePHPSAML - °¡Àå ³Î¸® ¾²ÀÌ°í, »ç¿ëÀÌ ½±´Ù.

Shibboleth - java stackÀ¸·Î ±¸ÇöÀÌ µÇ¾î ÀÖÀ¸¸ç, terracotta¸¦ ÀÌ¿ëÇÏ¿© sessionÀ» ÀúÀåÇϱ⠶§¹®¿¡ »ó´ëÀûÀ¸·Î È®À强ÀÌ ³ô´Ù.

WSO2 identity server - ¾Õ¿¡¼­µµ ¾ð±ÞÇÏ¿´µíÀÌ, È®À强¿¡ ¹®Á¦°¡ ÀÖ´Â °ÍÀ¸·Î º¸À̸ç, ÀÚü OSGi ÄÁÅ×À̳ÊÀÎ carbon ¿£Áø À§¿¡¼­ µ¿ÀÛÇÑ´Ù. SAML »Ó¸¸ ¾Æ´Ï¶ó OAuth,STS ¼­ºñ½º¸¦ Ãß°¡ Áö¿øÇϸç, Provisioning protocolÀÎ SCIMµµ ÇÔ²² Áö¿øÇÑ´Ù. ¿ÀÇ ¼Ò½ºÀÌÁö¸¸, Á¦Ç° ¿Ï¼ºµµ°¡ ¸Å¿ì ³ô°í, »ç¿ëÀÌ ¸Å¿ì ½±´Ù. (¸ð´ÏÅ͸µ,°ü¸® ±â´ÉµîÀÌ °­Á¡)

Open AM - Sun IDMÀ» ¸ðÅ·ΠÇÏ¿©, ÇöÀç ¿ÀǼҽºÈ­ µÇ¾ú´Ù. ¾Æ¹«·¡µµ enterprise Á¦Ç°À» ±â¹ÝÀ¸·Î ÇÏ´Ù º¸´Ï º¹Àâµµ°¡ »ó´ëÀûÀ¸·Î ³ô´Ù.

CAS - TBD



Ãâó: http://bcho.tistory.com/755 [Á¶´ëÇùÀÇ ºí·Î±×]