The Jakarta Project
      The Tomcat Servlet/JSP Container

Links

Getting Started

Configuration

Administrators

Application Developers

Catalina Developers

Jasper Developers

Realm Configuration HOW-TO

Quick Start

ÀÌ ¹®¼­´Â »ç¿ëÀÚ, ºñ¹Ð¹øÈ£, ¿ªÇÒÀ» °®°í ÀÖ´Â ±âÁ¸ "µ¥ÀÌÅͺ£À̽º" ¿¡ ¿¬°áÇØ¼­ ÄÁÅ×À̳ʰ¡ °ü¸®ÇÏ´Â º¸¾È container managed securityÀ» Áö¿øÇϱâ À§ÇØ ÅèĹ ¼³Á¤¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. Çϳª ÀÌ»óÀÇ <security-constraint> ¿¤¸®¸ÕÆ®¿Í, »ç¿ëÀÚ°¡ ÀÎÁõÇÒ ¶§ ¾î¶°ÇÑ ¹æ½ÄÀ¸·Î ÇÒÁö Á¤ÇÏ´Â ÇϳªÀÇ <login-config> ¿¤¸®¸ÕÆ®¸¦ °®°íÀÖ´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÑ´Ù¸é À̰͸¸ ½Å°æ¾²¸é µË´Ï´Ù. ÀÌ·¯ÇÑ ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é, ÀÌ ¹®¼­¸¦ ÀÐÁö ¾Ê¾Æµµ ¹«¹æÇÕ´Ï´Ù.

ÄÁÅ×ÀÌ³Ê °ü¸® º¸¾È¿¡ °üÇÑ ±âº»ÀûÀÎ ¹è°æ Áö½ÄÀº Servlet Specification (Version 2.3), Section 12¸¦ º¸½Ê½Ã¿À. À¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ¿Í °ü¸®ÀÚ¿ë Ãʺ¸ ¼öÁØÀÇ ¹®¼­´Â ¾ÆÁ÷ ÁغñÁßÀÔ´Ï´Ù. (FIXME - link to backgrounder on container managed security to be provided).

Tomcat 4ÀÇ ´ÜÀÏ ÀÎÁõ Single Sign On ±â´É »ç¿ë¿¡ °üÇÑ Á¤º¸( °¡»ó È£½ºÆ®¿Í °ü°èµÈ Àüü À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» Çѹø ÀÎÁõÀ» ÅëÇØ¼­ Á¢±ÙÇÏ´Â)´Â ¿©±â¸¦ º¸½Ê½Ã¿À.

°³°ü Overview
Realm À̶õ ¹«¾ùÀΰ¡? What is a Realm?

RealmÀº ÇϳªÀÇ À¥ ¾ÖÇø®ÄÉÀ̼Ç(¶Ç´Â º¹¼öÀÇ) Á¤´çÇÑ »ç¿ëÀÚµéÀ» ÀÎÁõÇϰí, ¾Æ¿ï·¯ °¢ »ç¿ëÀÚ¿¡ ¸Â´Â ¿ªÇÒ rolesÀ» ÁöÁ¤ÇÏ´Â »ç¿ëÀÚ¿Í ºñ¹Ð¹øÈ£ÀÇ "database" ÀÔ´Ï´Ù. ¿ªÇÒÀº Unix °è¿­ÀÇ ½Ã½ºÅÛ¿¡¼­ ±×·ì groups °ú ºñ½ÁÇÏ´Ù°í »ý°¢ÇÏ¸é µË´Ï´Ù. ¿Ö³ÄÇÏ¸é Æ¯Á¤ÇÑ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÀÚ¿ø¿¡ Á¢±ÙÇÏ´Â °ÍÀº ƯÁ¤ÇÑ ¿ªÇÒÀ» °®°í ÀÖ´Â ¸ðµç »ç¿ëÀÚ¿¡°Ô¸¸ ÁÖ¾îÁö±â ¶§¹®ÀÔ´Ï´Ù(¿¬°üµÈ »ç¿ëÀÚ ¸ñ·Ï ¿­°Å°¡ ¾Æ´Ñ). ¾î¶² ƯÁ¤ÇÑ »ç¿ëÀÚ´Â ±× »ç¿ëÀÚ¸í¿¡ ´ëÇØ¼­ ¿©·¯°³ÀÇ ¿ªÇÒÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù.

¼­ºí¸´ »ç¾ç¼­°¡ ¾ÖÇø®ÄÉÀ̼ÇÀÌ º¸¾È ¿ä±¸»çÇ×À» ¼±¾ð declareÇϱâ À§ÇØ À̽ļºÀÖ´Â ¸ÞÄ«´ÏÁòÀ» ±â¼úÇÕ´Ï´Ù¸¸(web.xml ¹èÄ¡ Áö½ÃÀÚ¿¡¼­), ¼­ºí¸´ ÄÁÅ×ÀÌ³Ê¿Í °ü·ÃµÈ »ç¿ëÀÚ¿Í ¿ªÇÒ »çÀÌ¿¡ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÏ´Â À̽ļºÀÖ´Â API´Â ¾ø½À´Ï´Ù. ±×·¯³ª, ¸¹Àº °æ¿ì ¼­ºí¸´ ÄÁÅ×À̳ʸ¦ Á¦Ç° ȯ°æ¿¡¼­ ÀÌ¹Ì ±¸ÇöµÈ ±âÁ¸ÀÇ ÀÎÁõ µ¥ÀÌŸº£À̽º³ª ¸ÞÄ«´ÏÁò°ú "¿¬°á"ÇÏ´Â °ÍÀº ¹Ù¶÷Á÷ÇÑ ÀÏÀÔ´Ï´Ù. ±×·¯¹Ç·Î, ÅèĹ 4 ´Â ÀÌ ¿¬°áÀ» ¼³Á¤ÇÏ´Â "plug in" ÄÄÆ÷³ÍÆ®¿¡ ÀÇÇØ ±¸ÇöµÉ ¼ö ÀÖ´Â ÀÚ¹Ù ÀÎÅÍÆäÀ̽º (org.apache.catalina.Realm)¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¼¼°¡Áö ´Ù¸¥ ÀÎÁõ Á¤º¸ ¼Ò½º¿¡ ¿¬°áÀ» Áö¿øÇÏ´Â ¼¼°¡Áö Ç¥ÁØ plug-in ÀÌ Á¦°øµË´Ï´Ù:

  • JDBCRealm - JDBC µå¶óÀ̹ö¸¦ ÅëÇØ¼­ °ü°è µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ ÀÎÁõ Á¤º¸¿¡ Á¢±ÙÇÕ´Ï´Ù.
  • JNDIRealm - JNDI Á¦°øÀÚ(provider)¸¦ ÅëÇØ¼­ LDAP ±â¹Ý µð·ºÅ丮 ¼­¹ö¿¡ ÀúÀåµÈ ÀÎÁõ Á¤º¸¿¡ Á¢±ÙÇÕ´Ï´Ù.
  • MemoryRealm - XML ¹®¼­(conf/tomcat-users.xml) ¿¡ ÀÖ´Â Á¤º¸·ÎºÎÅÍ ÃʱâÈ­µÇ´Â ³»ºÎ ¸Þ¸ð¸® °´Ã¼ Ä÷º¼Ç¿¡ ÀúÀåµÈ ÀÎÁõ Á¤º¸¿¡ Á¢±ÙÇÕ´Ï´Ù.

Á÷Á¢ Realm ±¸ÇöÀ» ¸¸µç ÈÄ Tomcat ¿¡ ÅëÇÕ½ÃŰ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ±×·¯³ª, À̰Ϳ¡ °üÇÑ °ÍÀº ÀÌ ¹®¼­ÀÇ ¹üÁÖ¸¦ ¹þ¾î³³´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â (FIXME - reference to developer stuff)¸¦ º¸½Ê½Ã¿À.

Realm ¼³Á¤Çϱâ Configuring a Realm

Ç¥ÁØ Realm ±¸ÇöÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀ» º¸±â Àü¿¡, Realm ÀÌ ¾î¶»°Ô ¼³Á¤µÇ´ÂÁö¸¦ ÀÌÇØÇØ¾ßÇÕ´Ï´Ù. º¸Åë conf/server.xml ȯ°æ¼³Á¤ ÆÄÀÏ¿¡ XML ¿¤¸®¸ÕÆ®¸¦ Ãß°¡ÇÏ°Ô µÇ¸ç, ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù:

<Realm className="... ÀÌ ±¸Çö¿¡ °üÇÑ class ¸í"
       ... ÀÌ ±¸ÇöÀ» À§ÇÑ ´Ù¸¥ ¼Ó¼ºµé .../>

<Realm> ¿¤¸®¸ÕÆ®´Â ÇØ´ç Realm ÀÇ "scope" ¿¡ Á÷Á¢ÀûÀÎ ¿µÇâ·ÂÀ» °®°í ÀÖ´Â ¼¼°¡Áö ´Ù¸¥ ¿¤¸®¸ÕÆ®µé Áß ÇϳªÀÇ ³»ºÎ¿¡ ÁßøµÉ ¼ö ÀÖ½À´Ï´Ù. (Áï, ¾î¶² À¥ ¾ÖÇø®ÄÉÀ̼ǵéÀÌ °°Àº ÀÎÁõ Á¤º¸¸¦ °øÀ¯ÇÒ °ÍÀÎÁö °°Àº...):

  • <Engine> ¿¤¸®¸ÕÆ® ³»ºÎ - ÀÌ Realm Àº ¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼ǵé°ú ¸ðµç °¡»ó È£½ºÆ®µéÀÌ °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¿ÜÀûÀÎ °æ¿ì´Â Á¾¼ÓÀûÀÎ <Host> ¶Ç´Â <Context> ¿¤¸®¸ÕÆ® ³»ºÎ¿¡ ÁßøµÈ Realm ÀÌ ÀÖÀ» ¶§ À̰ÍÀº Á¦¿ÜµË´Ï´Ù.
  • <Host> ¿¤¸®¸ÕÆ® ³»ºÎ - ÀÌ Realm Àº ÇÑ °¡»ó È£½ºÆ® ³»ÀÇ ¸ðµç À¥ ¾ÖÇø®ÄÉÀ̼ǵéÀÌ °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¿ÜÀûÀÎ °æ¿ì´Â Á¾¼ÓÀûÀÎ <Context> ¿¤¸®¸ÕÆ® ³»ºÎ¿¡ ÁßøµÈ Realm ÀÌ ÀÖÀ» ¶§ À̰ÍÀº Á¦¿ÜµË´Ï´Ù.
  • <Context> ¿¤¸®¸ÕÆ® ³»ºÎ - ÀÌ Realm Àº ¿À·ÎÁö ÀÌ À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­¸¸ »ç¿ëµË´Ï´Ù.
Ç¥ÁØ Realm ±¸Çöü Standard Realm Implementations
JDBCRealm

¼Ò°³

JDBCRealm Àº JDBC µå¶óÀ̹ö¸¦ ÅëÇØ Á¢±ÙµÇ´Â °ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â »ç¿ëÀÚ¸¦ ã´Â Tomcat 4 Realm ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º ±¸Á¶°¡ ´ÙÀ½ ¿ä°Ç¿¡ ºÎÇÕÇÑ´Ù¸é ±âÁ¸ Å×À̺í°ú Ä÷³¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ½ÇÁúÀûÀΠȯ°æ¼³Á¤ À¯µ¿¼ºÀ» °®°í ÀÖ½À´Ï´Ù:

  • ÀÌ Realm ÀÌ ÀνÄÇÒ ¼ö ÀÖ´Â °¢°¢ÀÇ À¯È¿ÇÑ »ç¿ëÀÚ¸¶´Ù ÇѰ³ÀÇ Row ¸¦ °®°í ÀÖ´Â ÂüÁ¶ÇÒ ¼ö ÀÖ´Â users Å×À̺íÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
  • users Å×À̺íÀº Àû¾îµµ 2°³ ÀÌ»óÀÇ Ä÷³ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. (±âÁ¸ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏ´Â °ÍÀÌ ´õ À־ µË´Ï´Ù.):
    • »ç¿ëÀÚ¸íÀº ·Î±×ÀÎÇÒ ¶§ Tomcat ¿¡ ÀÇÇØ Àνĵ˴ϴÙ.
    • ºñ¹Ð¹øÈ£´Â ·Î±×ÀÎÇÒ ¶§ Tomcat ¿¡ ÀÇÇØ Àνĵ˴ϴÙ. ÀÌ °ªÀº ÀϹÝÅØ½ºÆ®³ª ¾ÏȣȭµÈ °Íµµ »ó°ü¾ø½À´Ï´Ù. - ¾Æ·¡ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¸½Ê½Ã¿À.
  • ƯÁ¤ »ç¿ëÀÚ¿¡ ÇÒ´çµÇ´Â À¯È¿ÇÑ °¢°¢ÀÇ ¿ªÇÒ¸¶´Ù ÇÑ Row¸¦ °®°í ÀÖ´Â user roles Å×À̺íÀÌ ÀÖ¾î¾ßÇÕ´Ï´Ù. ÇÑ »ç¿ëÀÚ¿¡ ´ëÇØ¼­ ¿ªÇÒ Á¤º¸°¡ ¾ø¾îµµ µÇ°í, Çϳª ÀÌ»óÀ־ µË´Ï´Ù.
  • user roles Å×À̺íÀº Àû¾îµµ 2°³ ÀÌ»óÀÇ Ä÷³ÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. (±âÁ¸ ¾ÖÇø®ÄÉÀÌ¼Ç ¿¡¼­ »ç¿ëÇÏ´Â °ÍÀÌ ´õ À־ µË´Ï´Ù.):
    • »ç¿ëÀÚ¸íÀº Tomcat ¿¡ ÀÇÇØ Àνĵ˴ϴÙ.( µ¿ÀÏÇÑ °ªÀÌ users Å×ÀÌºí¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù).
    • ÀÌ »ç¿ëÀÚ¿Í °ü°èµÈ À¯È¿ÇÑ ¿ªÇÒ ¸íÀÌ ÀÖ½À´Ï´Ù.

Quick Start

JDBCRealm À» »ç¿ëÇϱâ À§ÇØ Tocmat À» ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ´Ü°è¸¦ µû¶ó¾ßÇÕ´Ï´Ù:

  1. À§¿¡ ¾ð±ÞÇÑ ÇüÅÂÀÇ Table ÀÌ ¾ø´Ù¸é, À§ ¿ä°Ç¿¡ ¸Â´Â Å×À̺í°ú Ä÷³À» ¸¸µå½Ê½Ã¿À.
  2. Àû¾îµµ Àб⠰¡´ÉÇÑ ¼Ó¼ºÀ» °¡Áø À§¿¡ ±â¼úµÈ Å×À̺íÀ» »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ¸í°ú ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇϽʽÿÀ. (TomcatÀº À̵é Å×ÀÌºí¿¡ ¾²±â ÀÛ¾÷À» Àý´ë ÇÏÁö ¾Ê½À´Ï´Ù.)
  3. »ç¿ëÇÒ JDBC µå¶óÀ̹ö¸¦ $CATALINA_HOME/server/lib µð·ºÅ丮(À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¢±ÙÇÏÁö ¾Ê¾Æµµ µÈ´Ù¸é)³ª ¶Ç´Â $CATALINA_HOME/common/lib µð·ºÅ丮(Tomcat 4 ¿Í À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¸ðµÎ »ç¿ëÇÑ´Ù¸é) ¿¡ º¹»çÇϽʽÿÀ. ÁÖÀÇÇÒ Á¡Àº ¿ÀÁ÷ JAR ÆÄÀϸ¸ Àνĵ˴ϴÙ!
  4. $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ ¾Æ·¡Ã³·³ <Realm> ¿¤¸®¸ÕÆ®¸¦ ¼³Á¤ÇϽʽÿÀ.
  5. Tomcat 4 ¸¦ Àç½Ãµ¿ÇϽʽÿÀ.

Realm ¿¤¸®¸ÕÆ® ¼Ó¼ºµé

JDBCRealm À» ¼³Á¤ÇÏ·Á¸é, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ <Realm> ¿¤¸®¸ÕÆ®¸¦ Ãß°¡Çϰí À§¿¡¼­ ¼³¸íÇÑ ´ë·Î ³»Àç½ÃÄÑ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¼Ó¼ºµéÀº ÀÌ ±¸Çö¿¡¼­ Áö¿øµÇ´Â °ÍµéÀÔ´Ï´Ù:

AttributeDescription
className

ÀÌ Realm ±¸ÇöÀÇ Àüü Java Ŭ·¡½º ¸í. ¹Ýµå½Ã À̰÷¿¡ "org.apache.catalina.realm.JDBCRealm" À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

connectionName

JDBC ¿¬°á¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ¸í.

connectionPassword

JDBC ¿¬°á¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º ºñ¹Ð¹øÈ£.

connectionURL

JDBC ¿¬°á¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º URL

debug

°ü·ÃµÈ Logger ¿¡ ³²°ÜÁö´Â ÀÌ Realm Á¤º¸ÀÇ µð¹ö±ë Á¤º¸ ¼öÁØ. ³ôÀº ¼ýÀÚ´Â ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ³²±é´Ï´Ù. ±âº»°ªÀ¸·Î µð¹ö±ë Á¤º¸ ¼öÁØÀº 0 ÀÔ´Ï´Ù.

digest

ÀϹÝÀûÀÎ ÅØ½ºÆ®°¡ ¾Æ´Ñ ÇüÅ·Πºñ¹Ð¹øÈ£¸¦ ÀúÀåÇϴµ¥ »ç¿ëÇÏ´Â ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò. À¯È¿ÇÑ ¹ëºê´Â java.security.MessageDigest Ŭ·¡½º¿¡ ÀÇÇØ ¹Þ¾Æµé¿©Áö´Â ¾Ë°í¸®Áò¸íÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â Digested Passwords ¸¦ º¸½Ê½Ã¿À. ¸¸ÀÏ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ºñ¹Ð¹øÈ£´Â ÀÏ¹Ý ÅØ½ºÆ®·Î ÀúÀåµË´Ï´Ù.

driverName

»ç¿ëÇÏ´Â JDBC µå¶óÀ̹öÀÇ Àüü °æ·Î¸í. ÀûÀýÇÑ ¹ëºê¸¦ À§Çؼ­ JDBC µå¶óÀ̹öÀÇ ¹®¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

roleNameCol

Çö »ç¿ëÀÚ¿¡ ÇÒ´çµÈ ¿ªÇÒ ¸íÀ» °®°í ÀÖ´Â user roles Å×À̺íÀÇ Ä÷³ À̸§

userCredCol

Çö »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£(ÀϹÝÅØ½ºÆ® ¶Ç´Â digest ¼Ó¼ºÀÌ ¼³Á¤µÇ¾î¼­ ´ÙÀÌÁ¦½ºÆ® µÇ¾î ÀÖ´Â)¸¦ °®°í ÀÖ´Â users Å×ÀÌºí¿¡¼­ Ä÷³ À̸§.

userNameCol

users ¿Í user roles Å×ÀÌºí¿¡¼­ Çö»ç¿ëÀÚÀÇ »ç¿ëÀÚ¸íÀ» °®°í ÀÖ´Â, Ä÷³ À̸§.

userRoleTable

ƯÁ¤ÇÑ username¿¡ ÇÒ´çµÈ °¢°¢ÀÇ role ¸¶´Ù Çϳª¾¿ÀÇ row¸¦ °®°í ÀÖ´Â Å×À̺íÀÇ À̸§. ÀÌ Å×À̺íÀº ÃÖ¼ÒÇÑ userNameCol °ú roleNameCol ¼Ó¼º¿¡ ÀÇÇØ ¸í¸íµÈ Ä÷³µéÀ» °®°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

userTable

Tomcat ¿¡¼­ ÀνĵǴ °¢°¡ÀÇ username ¸¶´Ù ÇϳªÀÇ row¸¦ °®°í ÀÖ´Â Å×À̺í À̸§. ÀÌ Å×À̺íÀº ÃÖ¼ÒÇÑ userNameCol °ú userCredCol ¼Ó¼º¿¡ ÀÇÇØ ¸í¸íµÈ Ä÷³µéÀ» °®°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

¿¹Á¦

ÇÊ¿äÇÑ Å×À̺íÀ» »ý¼ºÇÏ´Â ¿¹Á¦ SQL ½ºÅ©¸³Æ®´Â À̰Ͱú °°À» °ÍÀÔ´Ï´Ù (°¢ÀÚÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ¸Â°Ô ¼öÁ¤ÇϽʽÿÀ):

create table users (
  user_name         varchar(15) not null primary key,
  user_pass         varchar(15) not null
);

create table user_roles (
  user_name         varchar(15) not null,
  role_name         varchar(15) not null,
  primary key (user_name, role_name)
);

¿¹Á¦ÀÇ Realm ¿¤¸®¸ÕÆ®´Â ±âº» $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ (ÁÖ¼®À» Á¦°ÅÇϰí) Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ´ÙÀ½Àº À§¿¡ ÀÖ´Â Å×À̺íµé·Î ¼³Á¤µÇ°í, »ç¿ëÀÚ¸í "dbuser" ¿Í ºñ¹Ð¹øÈ£ "dbpass"·Î Á¢±ÙÇÒ ¼ö ÀÖ´Â "authority" ¶ó´Â MySQL µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÑ ¿¹Á¦ÀÔ´Ï´Ù:

<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
      driverName="org.gjt.mm.mysql.Driver"
   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&password=dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"
   userRoleTable="user_roles" roleNameCol="role_name"/>

Ãß°¡ ÁÖÀÇ»çÇ× Additional Notes

JDBCRealm Àº ´ÙÀ½ ±ÔÄ¢¿¡ µû¶ó µ¿ÀÛÇÕ´Ï´Ù:

  • ¸ÇóÀ½ º¸È£µÈ ÀÚ¿ø¿¡ Á¢±ÙÇÏ·Á°í ½ÃµµÇÒ ¶§¿¡ Tomcat 4 ´Â ÇöÀç Realm ÀÇ authenticate() ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù. ±×·¯¹Ç·Î, µ¥ÀÌÅͺ£À̽º¿¡ º¯°æµÈ »çÇ×(»õ·Î¿î »ç¿ëÀÚ, ºñ¹Ð¹øÈ£, ¿ªÇÒÀÇ º¯°æ, µî)Àº ¹Ù·Î ¹Ý¿µµË´Ï´Ù.
  • ÀÏ´Ü ÀÎÁõÀ» Åë°úÇÑ »ç¿ëÀÚ(±× »ç¿ëÀÚÀÇ ¿ªÇÒµµ ÇÔ²²)´Â ·Î±×ÀÎÇØ ÀÖ´Â µ¿¾È Tomcat¿¡ ij½¬µË´Ï´Ù. (FORM±â¹Ý ÀÎÁõÀº session ½Ã°£ÀÌ Á¾·áµÇ°Å³ª ¹«È¿È­µÉ ¶§±îÁöÀ̰í; BASIC ÀÎÁõÀº »ç¿ëÀÚ°¡ ºê¶ó¿ìÀú¸¦ ´ÝÀ» ¶§ ±îÁöÀÔ´Ï´Ù.) ÀÌ¹Ì ÀÎÁõµÈ »ç¿ëÀÚ´Â µ¥ÀÌÅͺ£À̽º°¡ º¯°æµÇ¾îµµ ´ÙÀ½ ·Î±×ÀÎÇÒ ¶§±îÁö ¹Ý¿µµÇÁö ¾Ê½À´Ï´Ù.
  • users ¿Í user roles Å×ÀÌºí¿¡ ÀÖ´Â Á¤º¸¸¦ °ü¸®ÇÏ´Â °ÍÀº ¾ÖÇø®ÄÉÀ̼ÇÀÌ ´ã´çÇÒ ºÎºÐÀÔ´Ï´Ù. Tomcat ³»ºÎÀûÀ¸·Î »ç¿ëÀÚ¿Í ¿ªÇÒÀ» °ü¸®ÇÏ´Â ±â´ÉÀº Á¦°øµÇÁö ¾Ê½À´Ï´Ù.
  • Realm ¿¡¼­ ·Î±×·Î ³²°ÜÁö´Â µð¹ö±ë°ú ¿¹¿Ü¸Þ½ÃÁö´Â, »ç¿ëµÇ°í Àִ ȯ°æÀÇ Context, Host, Engine ¿¡ ÀÖ´Â Logger ¿¡ ÀÇÇØ ±â·ÏµË´Ï´Ù. ±âº»ÀûÀ¸·Î, ÇØ´ç Logger ´Â $CATALINA_HOME/logs µð·ºÅ丮¿¡ log ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
JNDIRealm

¼Ò°³

JNDIRealm Àº JNDI Á¦°øÀÚ(ÀüÇüÀûÀ¸·Î, JNDI API Ŭ·¡½º¸¦ »ç¿ëÇϴ ǥÁØ LDAP Á¦°øÀÚ)¿¡ ÀÇÇØ Á¢±ÙµÇ´Â µð·ºÅ丮 ¼­¹ö¿¡ ÀÖ´Â »ç¿ëÀÚ¸¦ ã´Â Tomcat 4 ÀÇ Realm ÀÎÅÍÆäÀ̽º ±¸ÇöÀÔ´Ï´Ù. realm Àº µð·ºÅ丮 º° ÀÎÁõ¿¡ µû¶ó ´Ù¾çÇÑ Á¢±ÙÀ» Áö¿øÇÕ´Ï´Ù.

µð·ºÅ丮¿¡ ¿¬°áÇϱâ Connecting to the directory

realm ÀÇ µð·ºÅ丮 ¿¬°áÀº connectionURL ¼³Á¤ ¼Ó¼º¿¡ µû¶ó Á¤ÇØÁý´Ï´Ù. JNDI Á¦°øÀÚ°¡ ÁöÁ¤ÇÏ´Â ÇüÅÂÀÇ URL ÀÔ´Ï´Ù. º¸Åë LDAP URL À̸ç, À̰ÍÀº ¿¬°áÇÒ µð·ºÅ丮 ¼­¹öÀÇ µµ¸ÞÀÎ À̸§À̳ª ¼±ÅÃÀûÀ¸·Î ÇÊ¿äÇÑ ·çÆ® ³×ÀÌ¹Ö ÄÁÅØ½ºÆ®ÀÇ Æ÷Æ® ¹øÈ£¿Í ±¸ºÐ¸í distinguished name (DN)À» ÁöÁ¤ÇÕ´Ï´Ù.

µð·ºÅ丮 °Ë»ö°ú »ç¿ëÀÚ¿Í ¿ªÇÒ Á¤º¸¸¦ °¡Á®¿À±â À§ÇØ ¿¬°áÇÒ¶§, realm Àº connectionName ¿Í connectionPassword ¼Ó¼º¿¡ ÁöÁ¤µÈ »ç¿ëÀÚ ¸í°ú ºñ¹Ð¹øÈ£·Î Á÷Á¢ µð·ºÅ丮¿¡ ÀÎÁõÀ» ½ÃµµÇÕ´Ï´Ù. ÀÌ ¼Ó¼º°ªÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é ÀÍ¸í ¿¬°áÀÌ µË´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì ÃæºÐÇÕ´Ï´Ù.

»ç¿ëÀÚ µð·ºÅ丮 ¿£Æ®¸® ¼±ÅÃÇϱâ Selecting the user's directory entry

ÀÎÁõµÈ °¢°¢ÀÇ »ç¿ëÀÚ´Â µð·ºÅ丮¿¡¼­ connectionURL ¼Ó¼º¿¡ Á¤ÀÇµÈ Ãʱâ DirContext ¿¡ ÀÖ´Â ¿¤¸®¸éÆ®¿¡ ÇØ´çµÇ´Â °³º° ¿£Æ®¸®¿¡ ÀÇÇØ ´ëÇ¥µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ »ç¿ëÀÚ ¿£Æ®¸®´Â ÀÎÁõ¿¡ »ç¿ëµÈ »ç¿ëÀÚ ¸íÀ» ¼Ó¼ºÀ¸·Î °®°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

Á¾Á¾ »ç¿ëÀÚ ¿£Æ®¸®ÀÇ ±¸ºÐ¸íÀº ÀÎÁõÀ» ³ªÅ¸³»´Â »ç¿ëÀÚ¸íÀ» Æ÷ÇÔÇÏÁö¸¸ ±× ¿ÜÀÇ °æ¿ì ¸ðµç »ç¿ëÀÚ°¡ µ¿ÀÎÇÕ´Ï´Ù. ÀÌ·± °æ¿ì userPattern ¼Ó¼ºÀÌ DNÀ» ÁöÁ¤Çϱâ À§Çؼ­ »ç¿ëµÇ¸ç, »ç¿ëÀÚ¸íÀ¸·Î ´ëüµÉ "{0}" Ç¥½Ã°¡ »ç¿ëµË´Ï´Ù.

±× ¿ÜÀÇ °æ¿ì realm Àº »ç¿ëÀÚ¸íÀ» Æ÷ÇÔÇÏ´Â À¯ÀÏÇÑ ¿£Æ®¸®¸¦ ã±âÀ§ÇØ µð·ºÅ丮¸¦ °Ë»öÇØ¾ßµË´Ï´Ù. ´ÙÀ½ ¼Ó¼ºµéÀº ÀÌ °Ë»ö¿¡ »ç¿ëµË´Ï´Ù:

  • userBase - »ç¿ëÀÚµéÀ» Æ÷ÇÔÇÏ´Â ¼­ºêÆ®¸®ÀÇ º£À̽º°¡ µÇ´Â ¿£Æ®¸®. ÁöÁ¤µÇÁö ¾ÊÀ¸¸é, ÃÖ»óÀ§¼öÁØÀÇ ÄÁÅØ½ºÆ®°¡ °Ë»ö º£À̽º·Î µË´Ï´Ù.
  • userSubtree - °Ë»ö ½ºÄÚÇÁ. true ·Î Á¤ÇÒ °æ¿ì userBase ¿£Æ®¸®·ÎºÎÅÍ ÀüüÀÇ ¼­ºêÆ®¸®¸¦ °Ë»öÇÏ°Ô µË´Ï´Ù. ±âº» °ªÀº false À̸ç ÃÖ»óÀ§ ¼öÁØÀ» Æ÷ÇÔÇÏ´Â ÇϳªÀÇ ¼öÁظ¸ °Ë»öÇϰԵ˴ϴÙ.
  • userSearch - »ç¿ëÀÚ¸íÀ» ´ëüÇÑ ÈÄ LDAP °Ë»öÇÊÅ͸¦ ÁöÁ¤ÇÏ´Â ÆÐÅÏ.

»ç¿ëÀÚ ÀÎÁõÇϱâ Authenticating the user

  • ¹ÙÀÎµå ¸ðµå Bind mode

    ±âº»ÀûÀ¸·Î realmÀº »ç¿ëÀÚ¿Í Á¦½ÃÇÑ ÆÐ½º¿öµå¿¡ ´ëÇÑ ¿£Æ®¸®ÀÇ ±¸ºÐ¸íDNÀ¸·Î µð·ºÅ丮¿¡ ¹ÙÀεùÇÔÀ¸·Î »ç¿ëÀÚÀÎÁõÀ» ÇÕ´Ï´Ù. ÀÌ·± °£´ÜÇÑ ¹ÙÀε尡 ¼º°øÇÏ¸é »ç¿ëÀÚ´Â ÀÎÁõµÈ °ÍÀ¸·Î °£Áֵ˴ϴÙ.

    º¸¾È ÀÌÀ¯·Î µð·ºÅ丮´Â »ç¿ëÀÚÀÇ ÆÐ½º¿öµå¸¦ ÀϹÝÅØ½ºÆ® ÇüŰ¡ ¾Æ´Ñ ´ÙÀÌÁ¦½ºÆ®µÈ ÇüÅ·ΠÀúÀåÇÕ´Ï´Ù(´õ ÀÚ¼¼ÇÑ Á¤º¸´Â Digested Passwords). ±×·± °æ¿ì, ´Ü¼ø ¹ÙÀεå ÀÛ¾÷ÀÇ ÀϺκÐÀ¸·Î µð·ºÅ丮´Â ÀÚµ¿À¸·Î ÀúÀåµÈ °ª¿¡ ºñ±³Çϱâ Àü¿¡ »ç¿ëÀÚÀÇ ÀϹÝÅØ½ºÆ® ÆÐ½º¿öµåÀÇ ¿Ã¹Ù¸¥ ´ÙÀÌÁ¦½ºÆ®¸¦ °è»êÇÕ´Ï´Ù. ±×·¯¹Ç·Î, ¹ÙÀÎµå ¸ðµå¿¡¼­ realm Àº ´ÙÀÌÁ¦½ºÆ® 󸮿¡ ¿¬°üµÇÁö ¾Ê½À´Ï´Ù. digest ¼Ó¼ºÀº »ç¿ëµÇÁö ¾ÊÀ¸¸ç, ¼³Á¤µÇ¾îµµ ¹«½ÃµË´Ï´Ù.

  • ºñ±³ ¸ðµå Comparison mode

    ´Ù¸¥ ÇÑ Æí, realm Àº µð·ºÅ丮¿¡¼­ ÀúÀåµÈ ÆÐ½º¿öµå¸¦ ºÒ·¯¿Í¼­ ¸í½ÃÀûÀ¸·Î »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ª°ú ºñ±³ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÐ½º¿öµå¸¦ °¡Áø »ç¿ëÀÚ ¿£Æ®¸®ÀÇ µð·ºÅ丮 ¼Ó¼º¸í¿¡ ´ëÇØ¼­ userPassword¼Ó¼ºÀ» ¼³Á¤ÇÒ °æ¿ì ÀÌ ¸ðµå°¡ µË´Ï´Ù.

    ºñ±³¸ðµå´Â ¸î°¡Áö ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¿ì¼±, connectionName °ú connectionPassword ¼Ó¼ºÀ», µð·ºÅ丮¿¡ ÀÖ´Â »ç¿ëÀÚÀÇ ÆÐ½º¿öµåµéÀ» realm ÀÌ Àеµ·Ï ¼³Á¤Çؾߵ˴ϴÙ. º¸¾ÈÀÇ °üÁ¡¿¡¼­ ÀÌ´Â ¹Ù¶÷Á÷ÇÏÁö ¾Ê½À´Ï´Ù; ½ÇÁ¦·Î ´ë´Ù¼öÀÇ µð·ºÅ丮 ±¸Çöü´Â µð·ºÅ丮 °ü¸®ÀÚ Á¶Â÷ ÀÌµé ÆÐ½º¿öµå¸¦ º¸´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. Ãß°¡ÀûÀ¸·Î, realm Àº Á÷Á¢ ÆÐ½º¿öµå ´ÙÀÌÁ¦½ºÆ®µµ ó¸®ÇؾߵǸç, ¿©±â¿¡´Â µð·ºÅ丮¿¡ ÀÖ´Â ÆÐ½º¿öµå ÇØ½¬¸¦ ±¸ÇöÇϴµ¥ »ç¿ëµÈ ¾Ë°í¸®ÁòÀÇ º¯Çüµµ Æ÷ÇԵ˴ϴÙ. ±×·¯³ª HTTP ´ÙÀÌÁ¦½ºÆ® Á¢±Ù ÀÎÁõ(RFC 2069)À» Áö¿øÇÏ´Â °Íó·³, ¶§·Î´Â ÀúÀåµÈ ÆÐ½º¿öµå¿¡ Á¢±ÙÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. (ÁÖÁöÇÒ °ÍÀº À§¿¡¼­ ³íÀÇÇÑ »ç¿ëÀÚ Á¤º¸¿¡ ´ëÇÑ ÀúÀå¼ÒÀÇ ÆÐ½º¿öµå â°í¿Í HTTP ´ÙÀÌÁ¦½ºÆ® ÀÎÁõÀº ´Ù¸£´Ù´Â °ÍÀÔ´Ï´Ù.)

»ç¿ëÀÚÀÇ ¿ªÇÒ ºÎ¿© Assigning roles to the user

µð·ºÅ丮 realm Àº µð·ºÅ丮ÀÇ ¿ªÇÒ Ç¥½Ã¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ¸·Î µÎ°¡Áö¸¦ Áö¿øÇÕ´Ï´Ù:

  • ¸í½ÃÀûÀÎ µð·ºÅ丮 ¿£Æ®¸®·Î¼­ÀÇ ¿ªÇÒ Roles as explicit directory entries

    ¿ªÇÒÀº ¸í½ÃÀûÀÎ µð·ºÅ丮 ¿£Æ®¸®¿¡ ÀÇÇØ ³ªÅ¸³»¾îÁú ¼ö ÀÖ½À´Ï´Ù. ¿ªÇÒ ¿£Æ®¸®´Â º¸Åë ÇϳªÀÇ LDAP ±×·ì ¿£Æ®¸®ÀÔ´Ï´Ù. ¿ªÇÒ¸íÀ» Æ÷ÇÔÇÏ´Â ÇϳªÀÇ ¼Ó¼º°ú , ´Ù¸¥ ÇϳªÀÇ ¼Ó¼ºÀº ±¸ºÐ¸íµéÀ̳ª ±× ¿ªÇÒ¿¡ ÇØ´çÇÏ´Â »ç¿ëÀÚµéÀÇ »ç¿ëÀÚ¸íÀ» °ªÀ¸·Î °¡Áö°í ÀÖ½À´Ï´Ù. ´ÙÀ½ ¼Ó¼ºµéÀº ÀÎÁõµÈ »ç¿ëÀÚ¿Í ¿¬°üµÈ ¿ªÇÒµéÀÇ À̸§À» ã±â À§ÇÑ µð·ºÅ丮 °Ë»öÀ» ¼³Á¤ÇÕ´Ï´Ù:

    • roleBase - ¿ªÇÒ °Ë»öÀ» À§ÇÑ ±â¹Ý ¿£Æ®¸®. ÁöÁ¤µÇÁö ¾ÊÀ¸¸é, °Ë»ö ±â¹ÝÀº ÃÖ»óÀ§·¹º§ µð·ºÅ丮 ÄÁÅØ½ºÆ®°¡ µË´Ï´Ù.
    • roleSubtree - °Ë»ö ¹üÀ§. roleBase ¿£Æ®¸®¸¦ ±âÁØÀ¸·Î Àüü ÇÏÀ§ µð·ºÅ丮¸¦ °Ë»öÇÏ·Á¸é true ·Î ¼³Á¤ÇÕ´Ï´Ù. ±âº» °ªÀº falseÀ̰í ž ·¹º§¸¸ Æ÷ÇÔÇÏ´Â ½Ì±Û·¹º§ °Ë»ö¸¸ ÇÏ°Ô µË´Ï´Ù.
    • roleSearch - ¿ªÇÒ ¿£Æ®¸®¸¦ ¼±ÅÃÇÏ´Â LDAP °Ë»ö ÇÊÅÍ. ¼±ÅÃÀûÀ¸·Î ÆÐÅÏÀ» Æ÷ÇÔÇÕ´Ï´Ù. "{0}" Àº ±¸ºÐ¸í¿¡ ´ëÇØ¼­ "{1}" Àº ÀÎÁõµÈ »ç¿ëÀÚÀÇ »ç¿ëÀÚ¸í¿¡ ´ëÄ¡µË´Ï´Ù.
    • roleName - ÇØ´ç ¿ªÇÒ À̸§À» Æ÷ÇÔÇÏ´Â ¿ªÇÒ ¿£Æ®¸®¿¡ ÀÖ´Â ¼Ó¼º
  • »ç¿ëÀÚ ¿£Æ®¸®ÀÇ ¼Ó¼ºÀ¸·Î¼­ÀÇ ¿ªÇÒ Roles as an attribute of the user entry

    ¿ªÇÒ À̸§Àº »ç¿ëÀÚ µð·ºÅ丮 ¿£Æ®¸®ÀÇ ¼Ó¼º¿¡ ÀÖ´Â °ª¿¡¼­ °¡Á®¿Ã ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¼Ó¼ºÀÇ À̸§À» ÁöÁ¤Çϱâ À§Çؼ­ userRoleName¸¦ »ç¿ëÇÕ´Ï´Ù.

¿ªÇÒ Ç¥½Ã¿¡ µÎ °¡Áö Á¢±Ù¹æ½ÄÀÇ Á¶ÇÕÀÌ »ç¿ëµÉ ¼öµµ ÀÖ½À´Ï´Ù.

Quick Start

JNDIRealm À» »ç¿ëÇϱâ À§ÇØ Tomcat À» ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ´Ü°è°¡ ÇÊ¿äÇÕ´Ï´Ù:

  1. µð·ºÅ丮 ¼­¹öÀÇ ±¸¼ºµÈ ½ºÅ°¸¶°¡ À§¿¡ ³ª¿­µÈ ¿ä±¸»çÇ׵鿡 ºÎÇյǴÂÁö ¸ÕÀú È®ÀÎÇÕ´Ï´Ù.
  2. ÇÊ¿äÇÏ´Ù¸é, Tomcat ¿¡¼­ »ç¿ëÇÒ »ç¿ëÀÚ¸í°ú ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÕ´Ï´Ù. À§¿¡ ±â¼úµÈ Á¤º¸¿¡ Àû¾îµµ ÀбâÀü¿ë Á¢¼Ó±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. (Tomcat Àº ÀÌ Á¤º¸¸¦ Àý´ë ¼öÁ¤ÇÏ·Á°í ÇÏÁö ¾Ê½À´Ï´Ù.)
  3. »ç¿ëÇÒ JNDI µå¶óÀ̹ö(ÀüÇüÀûÀ¸·Î JNDI°¡ °¡´ÉÇÑ ldap.jar)¸¦ $CATALINA_HOME/server/lib µð·ºÅ丮 ³»¿¡ º¹»çÇØ ³õ°Å³ª(À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¶ó¸é) , ¶Ç´Â $CATALINA_HOME/common/lib µð·ºÅ丮¿¡ º¹»çÇØ ³õ½À´Ï´Ù(Tomcat 4 ¿Í À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¸ðµÎ »ç¿ëÇÏ´Â µå¶óÀ̹ö¶ó¸é).
  4. $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ ¾Æ·¡¿Í °°ÀÌ <Realm> ¿¤¸®¸ÕÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.
  5. ±¸µ¿ÁßÀ̶ó¸é Tomcat 4¸¦ Àç½Ãµ¿ÇÕ´Ï´Ù.

Realm ¿¤¸®¸ÕÆ® ¼Ó¼ºµé Realm Element Attributes

JNDIRealm ¼³Á¤ÇÏ·Á¸é, À§¿¡¼­ ¼³¸íÇÑ ´ë·Î $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ <Realm> ¿ä¼Ò¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ ±¸Çö¿¡ Áö¿øµÇ´Â ¼Ó¼ºµéÀº ´ÙÀ½°ú °°½À´Ï´Ù:

AttributeDescription
className

ÀÌ Realm ±¸ÇöÀÇ Àüü Java Ŭ·¡½º ¸í. ¿©±â¿¡ ¹Ýµå½Ã "org.apache.catalina.realm.JDBCRealm" ¸¦ ½áÁà¾ß ÇÕ´Ï´Ù.

connectionName

LDAP °Ë»ö ÀÛ¾÷¿ë µð·ºÅ丮¿¡ ¿¬°á¼³Á¤½Ã »ç¿ëÇÒ µð·ºÅ丮 »ç¿ëÀÚ¸í. ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é À͸í(anonymous) ¿¬°áÀÌ ¸¸µé¾îÁö°í, º¸ÅëÀº userPassword ÇÁ·ÎÆÛƼ¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

connectionPassword

LDAP °Ë»ö ÀÛ¾÷¿ë µð·ºÅ丮¿¡ ¿¬°á¼³Á¤½Ã »ç¿ëÇÒ µð·ºÅ丮 ºñ¹Ð¹øÈ£. ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é À͸í(anonymous) ¿¬°áÀÌ ¸¸µé¾îÁö°í, º¸ÅëÀº userPassword ÇÁ·ÎÆÛƼ¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

connectionURL

LDAP °Ë»ö ÀÛ¾÷¿ë µð·ºÅ丮¿¡ ¿¬°á¼³Á¤½Ã JNDI µå¶óÀ̹ö¿¡ °Ç³×ÁÙ ¿¬°á URL.

contextFactory

ÀÌ ¿¬°á¿¡ »ç¿ëµÉ JNDI ÄÁÅØ½ºÆ® ÆÑÅ丮ÀÇ Àüü Java Ŭ·¡½º¸í. ±âº»ÀûÀ¸·Î, Ç¥ÁØ JNDI LDAP ÇÁ·Î¹ÙÀÌ´õ°¡ »ç¿ëµË´Ï´Ù. (com.sun.jndi.ldap.LdapCtxFactory).

debug

°ü·ÃµÈ Logger ¿¡ ³²°ÜÁö´Â ÀÌ Realm Á¤º¸ÀÇ µð¹ö±ë Á¤º¸ ¼öÁØ. ³ôÀº ¼ýÀÚ´Â ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ³²±é´Ï´Ù. ±âº»°ªÀ¸·Î µð¹ö±ë Á¤º¸ ¼öÁØÀº 0 ÀÔ´Ï´Ù.

digest

ÀϹÝÀûÀÎ ÅØ½ºÆ®°¡ ¾Æ´Ñ ÇüÅ·Πºñ¹Ð¹øÈ£¸¦ ÀúÀåÇϴµ¥ »ç¿ëÇÏ´Â ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò. À¯È¿ÇÑ ¹ëºê´Â java.security.MessageDigest Ŭ·¡½º¿¡ ÀÇÇØ ¹Þ¾Æµé¿©Áö´Â ¾Ë°í¸®Áò¸íÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â Digested Passwords ¸¦ º¸½Ê½Ã¿À. ¸¸ÀÏ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ºñ¹Ð¹øÈ£´Â ÀÏ¹Ý ÅØ½ºÆ®·Î ÀúÀåµË´Ï´Ù. userPassword °¡ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é ÇÊ¿ä¾ø½À´Ï´Ù.

roleBase

¿ªÇÒ °Ë»öÀ» À§ÇÑ º£À̽º µð·ºÅ丮 ¿£Æ®¸®. ÁöÁ¤µÇÁö ¾ÊÀ¸¸é, µð·ºÅ丮 ÄÁÅØ½ºÆ®¿¡ ÀÖ´Â ÃÖ»óÀ§ ¿¤¸®¸ÕÆ®°¡ »ç¿ëµË´Ï´Ù.

roleName

¿ªÇÒ °Ë»öÀÌ Ã£´Â µð·ºÅ丮 ¿£Æ®¸®ÀÇ ¿ªÇÒ¸íÀ» °®°í ÀÖ´Â ¼Ó¼ºÀÇ À̸§. Ãß°¡·Î ¼Ó¼º À̸§À» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëÀÚ ¿£Æ®¸®¿¡ ÀÖ°í Ãß°¡ ¿ªÇÒ À̸§À» Æ÷ÇÔÇÏ´Â userRoleName ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¸ÀÏ roleName ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ¿ªÇÒ °Ë»öÀ» ÇÏÁö ¾Ê°í, ¿ªÇÒÀº »ç¿ëÀÚ ¿£Æ®¸®¿¡¼­¸¸ °¡Á®¿Â´Ù.

roleSearch

java.text.MessageFormat ÀÇ ¹®¹ýÀ» µû¸£´Â, ¿ªÇÒ °Ë»ö¿¡ »ç¿ëµÇ´Â LDAP ÇÊÅÍ Ç¥Çö½Ä. »ç¿ëÀÚ ±¸ºÐ¸í(DN) ÀÚ¸®´Â {0} ¸¦ »ç¿ëÇϰí, »ç¿ëÀÚ¸í ÀÚ¸®¿¡´Â {1} À» »ç¿ëÇÕ´Ï´Ù. ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ¿ªÇÒ °Ë»öÀº ÇÏÁö ¾Ê°í userRoleName ¼Ó¼º¿¡ ÁöÁ¤µÈ »ç¿ëÀÚ ¿£Æ®¸®¿¡ ÀÖ´Â ¼Ó¼º¿¡¼­¸¸ °¡Á®¿É´Ï´Ù.

roleSubtree

»ç¿ëÀÚ¿¡ °ü°èµÈ ¿ªÇÒ ¿£Æ®¸®¿¡ ´ëÇÑ roleBase ·Î ÁöÁ¤µÈ ¿¤¸®¸ÕÆ®ÀÇ ÇÏÀ§Æ®¸®¸¦ °Ë»öÇÏ·Á¸é true ·Î ¼³Á¤ÇÑ´Ù. false °¡ ±âº»°ªÀÌ¸ç »óÀ§·¹º§¸¸ ã°ÔµÈ´Ù.

userBase

userSearch Ç¥Çö½ÄÀ» »ç¿ëÇØ¼­ »ç¿ëÀÚ °Ë»öÀ» ¼öÇàÇÏ´Â °Í¿¡ ´ëÇÑ ±â¹Ý ¿¤¸®¸ÕÆ®. ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, µð·ºÅ丮 ÄÁÅØ½ºÆ®¿¡ ÀÖ´Â »óÀ§ ·¹º§ ¿¤¸®¸ÕÆ®°¡ »ç¿ëµÈ´Ù. userPattern Ç¥Çö½ÄÀ» »ç¿ëÇÑ´Ù¸é »ç¿ëÇÏÁö ¾ÊÀ½.

userPassword

»ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ Æ÷ÇÔÇÏ´Â »ç¿ëÀÚ ¿£Æ®¸®¿¡ ÀÖ´Â ¼Ó¼ºÀÇ À̸§. ÀÌ °ªÀ» ÁöÁ¤Çϸé, JNDIRealm Àº connectionName °ú connectionPassword ¼Ó¼º¿¡ ÁöÁ¤µÈ °ªÀ» »ç¿ëÇØ¼­ µð·ºÅ丮¿¡ ¹ÙÀεåÇÒ °ÍÀ̰í, ÀÎÁõµÈ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ °ª°ú ºñ±³Çؼ­ ÇØ´ç ¼Ó¼ºÀ» ºÒ·¯¿Ã °ÍÀÌ´Ù. digest ¼Ó¼ºÀÌ ¼³Ä¡µÈ °æ¿ì, ÁöÁ¤µÈ ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®ÁòÀº µð·ºÅ丮¿¡¼­ ºÒ·¯¿Â °ª°ú ºñ±³Çϱâ Àü¿¡ »ç¿ëÀÚ°¡ Á¦½ÃÇÑ ºñ¹Ð¹øÈ£¿¡ Àû¿ëµÈ´Ù. ÀÌ °ªÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, JNDIRealm Àº »ç¿ëÀÚÀÇ ÁöÁ¤ÇÑ ¿£Æ®¸®¿Í ÆÐ½º¿öµåÀÇ ±¸ºÐ¸í DNÀ» »ç¿ëÇÏ´Â µð·ºÅ丮¿¡ ´ëÇØ ´Ü¼øÇÑ ¹ÙÀε带 ½ÃµµÇÒ °ÍÀÌ´Ù.

userPattern

»ç¿ëÀÚ µð·ºÅ丮 ¿£Æ®¸®ÀÇ ±¸ºÐ¸í¿¡ ´ëÇÑ ÆÐÅÏÀ̰í, java.text.MessageFormat ÀÇ ¹®¹ýÀ» µû¸¥´Ù. ½ÇÁ¦ »ç¿ëÀÚ¸íÀÇ ÀÚ¸®´Â {0} ·Î Ç¥½ÃµÈ´Ù. ±¸ºÐ¸íÀÌ »ç¿ëÀÚ À̸§À» Æ÷ÇÔÇÏ¸ç ´Ù¸¥ ¸ðµç »ç¿ëÀڵ鿡 ´ëÇØ¼­µµ µ¿ÀÏÇÒ °æ¿ì¿¡ userSearch, userSubtree, userBase ´ë½Å ÀÌ ¼Ó¼ºÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

userRoleName

ÀÌ »ç¿ëÀÚ¿¡ Á¤ÇØÁø ¿ªÇÒÀÇ À̸§µé¿¡ ´ëÇÑ 0 °³ ÀÌ»óÀÇ °ªÀ» °®°í ÀÖ´Â »ç¿ëÀÚ µð·ºÅ丮 ¿£Æ®¸®¿¡ ÀÖ´Â ¼Ó¼ºÀÇ À̸§. Ãß°¡·Î µð·ºÅ丮 °Ë»ö¿¡¼­ ¹ß°ßµÈ °³º°ÀûÀÎ ¿ªÇÒ ¿£Æ®¸®µé·ÎºÎÅÍ ºÒ·¯¿Â ¼Ó¼ºÀÇ À̸§À» ÁöÁ¤Çϱâ À§ÇØ roleName ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¸ÀÏ userRoleName ÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é »ç¿ëÀÚ¿¡ ´ëÇÑ ¸ðµç ¿ªÇÒµéÀº ¿ªÇÒ °Ë»öÀ¸·ÎºÎÅÍ ²ø¾î¿Â´Ù.

userSearch

»ç¿ëÀÚ µð·ºÅ丮 ¿£Æ®¸® °Ë»ö¿¡ »ç¿ëµÇ´Â LDAP ÇÊÅÍ Ç¥Çö½Ä. ½ÇÁ¦ »ç¿ëÀÚ¸íÀÇ ÀÚ¸®´Â {0} ·Î Ç¥½ÃµÈ´Ù. »ç¿ëÀÚ ¿£Æ®¸®¿¡ ´ëÇØ µð·ºÅ丮 °Ë»öÀ» ÇÏ·Á¸é userPattern ´ë½Å¿¡ ÀÌ ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÑ´Ù(userBase °ú userSubtree ÇÁ·ÎÆÛƼ¿Í ÇÔ²²).

userSubtree

»ç¿ëÀÚ ¿£Æ®¸®¿¡ ´ëÇØ userBase ÇÁ·ÎÆÛƼ¿¡¼­ ÁöÁ¤µÈ ¿¤¸®¸ÕÆ®ÀÇ Àüü ÇÏÀ§ µð·ºÅ丮¸¦ °Ë»öÇÏ·Á¸é true ·Î ¼³Á¤ÇÕ´Ï´Ù. ±âº» °ªÀº falseÀ̰í ž ·¹º§¸¸ °Ë»öÇÏ°Ô µË´Ï´Ù. userPattern Ç¥Çö½ÄÀ» »ç¿ëÇÑ´Ù¸é »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.

¿¹Á¦

µð·ºÅ丮 ¼­¹ö¿¡¼­ ÀûÀýÇÑ ½ºÅ°¸¶¸¦ ¸¸µå´Â ¹ýÀº ÀÌ ¹®¼­ÀÇ ¹üÀ§¸¦ ¹þ¾î³³´Ï´Ù. ¿Ö³ÄÇÏ¸é °¢°¢ÀÇ µð·ºÅ丮 ¼­¹ö ±¸Çö¸¶´Ù ´Ù¸£±â ¶§¹®ÀÔ´Ï´Ù. ¾Æ·¡ ¿¹Á¦¿¡¼­ OpenLDAP µð·ºÅ丮 ¼­¹ö (2.0.11 ÀÌ»ó ¹öÀü)¸¦ »ç¿ëÇÑ´Ù°í °¡Á¤ÇÕ´Ï´Ù. À̰ÍÀº http://www.openldap.org ¿¡¼­ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. slapd.conf ÆÄÀÏ¿¡´Â ´ÙÀ½ ¼¼ÆÃÀ» Æ÷ÇÔÇÑ´Ù°í °¡Á¤ÇÕ´Ï´Ù:

database ldbm
suffix dc="mycompany",dc="com"
rootdn "cn=Manager,dc=mycompany,dc=com"
rootpw secret

connectionURL ¿¡ ´ëÇØ °¡Á¤ÇÏ´Â °ÍÀº µð·ºÅ丮 ¼­¹ö°¡ ¿î¿ëµÇ´Â µ¿ÀÏÇÑ ÄÄÇ»ÅÍ¿¡¼­ ÅèĹÀÌ ¿î¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. JNDI LDAP Á¦°øÀÚ(provider) ¼³Á¤°ú »ç¿ë¹ý¿¡ °üÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â http://java.sun.com/products/jndi/docs.html ¸¦ º¸¼¼¿ä.

´ÙÀ½À¸·Î, ÀÌ µð·ºÅ丮 ¼­¹ö´Â ¾Æ·¡ º¸ÀÌ´Â ¿¤¸®¸ÕÆ®·Î Ȱ¼ºÈ­ µÇ¾ú´Ù°í °¡Á¤ÇÕ´Ï´Ù.(LDIF Çü½ÄÀ¸·Î):


# Define top-level entry
dn: dc=mycompany,dc=com
objectClass: dcObject
dc:mycompany

# Define an entry to contain people
# searches for users are based on this entry
dn: ou=people,dc=mycompany,dc=com
objectClass: organizationalUnit
ou: people

# Define a user entry for Janet Jones
dn: uid=jjones,ou=people,dc=mycompany,dc=com
objectClass: inetOrgPerson
uid: jjones
sn: jones
cn: janet jones
mail: j.jones@mycompany.com
userPassword: janet

# Define a user entry for Fred Bloggs
dn: uid=fbloggs,ou=people,dc=mycompany,dc=com
objectClass: inetOrgPerson
uid: fbloggs
sn: bloggs
cn: fred bloggs
mail: f.bloggs@mycompany.com
userPassword: fred

# Define an entry to contain LDAP groups
# searches for roles are based on this entry
dn: ou=groups,dc=mycompany,dc=com
objectClass: organizationalUnit
ou: groups

# Define an entry for the "tomcat" role
dn: cn=tomcat,ou=groups,dc=mycompany,dc=com
objectClass: groupOfUniqueNames
cn: tomcat
uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com
uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

# Define an entry for the "role1" role
dn: cn=role1,ou=groups,dc=mycompany,dc=com
objectClass: groupOfUniqueNames
cn: role1
uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

»ç¿ëÀÚ°¡ uid(¿¹ jjones) ·Î ¾îÇø®ÄÉÀ̼ǿ¡ ·Î±×ÀÎ ÇÑ´Ù´Â °Í°ú µð·ºÅ丮 °Ë»öÇØ¼­ ¿ªÇÒ Á¤º¸¸¦ °¡Á®¿À´Âµ¥ ÀÍ¸í ¿¬°áÀ̸é ÃæºÐÇÏ´Ù´Â °ÍÀ» °¡Á¤ÇÑ´Ù¸é À§¿¡ ¼³¸íÇÑ ´ë·Î ¼³Á¤µÈ OpenLDAP µð·ºÅ丮 ¼­¹ö¿¡ ´ëÇÑ Realm ¿¤¸®¸ÕÆ® ¿¹Á¦´Â ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù:

<Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
     connectionURL="ldap://localhost:389"
       userPattern="uid={0},ou=people,dc=mycompany,dc=com"
          roleBase="ou=groups,dc=mycompany,dc=com"
          roleName="cn"
        roleSearch="(uniqueMember={0})"
/>

ÀÌ·± ¼³Á¤¿¡¼­, realm Àº »ç¿ëÀÚÀÇ ±¸ºÐ¸íÀ» userPattern ¿¡ »ç¿ëÀÚ¸íÀ¸·Î ´ëÄ¡ÇØ¼­ °áÁ¤ÇÑ´Ù. ÀÌ DN °ú »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ºñ¹Ð¹øÈ£·Î µð·ºÅ丮¿¡ ¹ÙÀεùÇØ¼­ ÀÎÁõÇÑ ÈÄ¿¡ »ç¿ëÀÚÀÇ ¿ªÇÒÀ» ã±â À§ÇØ µð·ºÅ丮¸¦ °Ë»öÇÑ´Ù.

¸¸ÀÏ ·Î±×ÀÎ ÇÒ ¶§ »ç¿ëÀÚ ¾ÆÀ̵𰡠¾Æ´Ñ À̸ÞÀÏ ÁÖ¼Ò¸¦ »ç¿ëÇÏ·Á°í ÇÑ´Ù¸é ¾î¶»°Ô µÉ±î¿ä. ÀÌ·± °æ¿ì realm Àº »ç¿ëÀÚ ¿£Æ®¸®ÀÇ µð·ºÅ丮¸¦ °Ë»öÇØ¾ß¸¸ µË´Ï´Ù. (»ç¿ëÀÚ ¿£Æ®¸®°¡ ¾Æ¸¶µµ ´Ù¸¥ Á¶Á÷ ºÎ¼­³ª ȸ»ç À§Ä¡°°Àº ´ÙÁßÀÇ ÇÏÀ§Æ®¸®¿¡ ´ã°ÜÀÖÀ» ¶§ ¿ª½Ã °Ë»öÀº ÇÊ¿äÇÕ´Ï´Ù).

´õ ³ª¾Æ°¡, ¸¸ÀÏ ±×·ì ¿£Æ®¸®¿¡ Ãß°¡·Î ¿ªÇÒÀ» °®°í ÀÖ´Â »ç¿ëÀÚ ¿£Æ®¸®ÀÇ ¼Ó¼ºÀ» »ç¿ëÇÏ°í ½ÍÀ» °æ¿ì´Â ¾î¶»°Ô µÉ±î¿ä? Janet Jones ¿¡ ´ëÇÑ ¿£Æ®¸®¸¦ ã´Â´Ù¸é ´ÙÀ½°ú °°À» °ÍÀÌ´Ù:

dn: uid=jjones,ou=people,dc=mycompany,dc=com
objectClass: inetOrgPerson
uid: jjones
sn: jones
cn: janet jones
mail: j.jones@mycompany.com
memberOf: role2
memberOf: role3
userPassword: janet

ÀÌ realm ¼³Á¤¹ýÀº »õ·Î¿î ¿ä±¸¸¦ ¸¸Á·½ÃŲ´Ù:

<Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
     connectionURL="ldap://localhost:389"
          userBase="ou=people,dc=mycompany,dc=com"
        userSearch="(mail={0})"
      userRoleName="memberOf"
          roleBase="ou=groups,dc=mycompany,dc=com"
          roleName="cn"
        roleSearch="(uniqueMember={0})"
/>

Janet Jones ÀÌ "j.jones@mycompany.com" ·Î ·Î±×ÀÎ ÇÑ´Ù¸é, realm Àº ¸ÞÀÏ ¼Ó¼ºÃ³·³ À¯ÀÏÇÑ ¿£Æ®¸®¿¡ ´ëÇÑ µð·ºÅ丮¸¦ °Ë»öÇϰí, ÁÖ¾îÁø ºñ¹Ð¹øÈ£¸¦ °®°í uid=jjones,ou=people,dc=mycompany,dc=com ó·³ µð·ºÅ丮¿¡ ¹ÙÀεåÇÏ·Á°í ½ÃµµÇÒ °ÍÀÌ´Ù. ÀÎÁõÀÌ ¼º°øÇϸé, ¼¼°³ÀÇ ¿ªÇÒÀÌ ÇÒ´çµÈ´Ù: "role2" °ú "role3" °ú µð·ºÅ丮 ¿£Æ®¸®¿¡ ÀÖ´Â "memberOf" ¼Ó¼ºÀÇ °ªµé, "ÅèĹ", »ç¿ëÀÚ°¡ ¼Ò¼ÓµÈ À¯ÀÏÇÑ ±×·ì¿£Æ®¸® "cn" ¼Ó¼ºÀÇ °ª.

¸¶Áö¸·À¸·Î, µð·ºÅ丮¿¡¼­ ºñ¹Ð¹øÈ£¸¦ °¡Á®¿ÈÀ¸·Î »ç¿ëÀÚ ÀÎÁõÀ» ó¸®Çϰí realm ¿¡ ÀÖ´Â ·ÎÄà ºñ±³¸¦ ÇÑ´Ù¸é, realm ¼³Á¤Àº ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù:

<Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
    connectionName="cn=Manager,dc=mycompany,dc=com"
connectionPassword="secret"
     connectionURL="ldap://localhost:389"
      userPassword="userPassword"
       userPattern="uid={0},ou=people,dc=mycompany,dc=com"
          roleBase="ou=groups,dc=mycompany,dc=com"
          roleName="cn"
        roleSearch="(uniqueMember={0})"
/>

±×·¯³ª, À§¿¡¼­ ³íÀÇµÈ °Íó·³, ÀÎÁõÀ» À§ÇÑ ±âº» ¹ÙÀÎµå ¸ðµå°¡ º¸Åë Àß ¾²ÀÔ´Ï´Ù.

Ãß°¡ ÁÖÀÇ»çÇ× Additional Notes

JNDIRealm ´Â ´ÙÀ½ ±ÔÄ¢¿¡ µû¶ó¼­ µ¿ÀÛÇÕ´Ï´Ù:

  • »ç¿ëÀÚ°¡ º¸È£µÈ ÀÚ¿ø¿¡ óÀ½À¸·Î Á¢±ÙÀ» ½ÃµµÇϸé Tomcat 4´Â ÇØ´ç Realm ÀÇ authenticate() ¸Þ¼Òµå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù. ±×·¯¹Ç·Î, Á÷Á¢ µ¥ÀÌÅͺ£À̽º¿¡ º¯°æÇÑ °Í(»õ »ç¿ëÀÚ, ºñ¹Ð¹øÈ£³ª ¿ªÇÒ º¯°æ, µî)Àº Áï½Ã ¹Ý¿µµË´Ï´Ù.
  • ÀÏ´Ü »ç¿ëÀÚ°¡ ÀÎÁõÀ» Åë°úÇϸé, »ç¿ëÀÚ(ÀÌ¿¡ °ü°èµÈ ¿ªÇÒ) ´Â »ç¿ëÀÚ ·Î±×ÀÎ ¼¼¼Ç µ¿¾È Tomcat ³»¿¡ ij½ÃµË´Ï´Ù. (FORM±â¹Ý ÀÎÁõ¿¡¼­´Â, ¼¼¼ÇÀÌ ½Ã°£ Á¾·áµÇ°Å³ª ¹«È¿È­ µÉ¶§±îÁö¸¦ ¶æÇϰí; BASIC ÀÎÁõ¿¡¼­´Â, »ç¿ëÀÚ°¡ ºê¶ó¿ìÀú¸¦ ´ÝÀ» ¶§±îÁö¸¦ ¶æÇÕ´Ï´Ù). ÀÌ¹Ì ÀÎÁõµÈ »ç¿ëÀÚÀÇ µ¥ÀÌÅͺ£À̽º Á¤º¸¿¡ º¯È­°¡ »ý±â¸é ¹Ù·Î ¹Ý¿µµÇÁö ¾Ê°í ´Ù½Ã »ç¿ëÀÚ°¡ ·Î±×ÀÎ ÇÏ´Â ½ÃÁ¡¿¡ ¹Ý¿µµË´Ï´Ù.
  • µð·ºÅ丮 ¼­¹ö¿¡ ÀÖ´Â Á¤º¸ÀÇ °ü¸®´Â ÇØ´ç ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¥ÀÓÀÔ´Ï´Ù. Tocmat Àº »ç¿ëÀÚ¿Í ¿ªÇÒÀ» À¯ÁöÇϱâ À§Çؼ­ ¾î¶°ÇÑ ³»ÀåµÈ ±â´Éµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù.
  • Realm ¿¡¼­ ·Î±×·Î ³²°ÜÁö´Â µð¹ö±ë°ú ¿¹¿Ü¸Þ½ÃÁö´Â, »ç¿ëµÇ°í Àִ ȯ°æÀÇ Context, Host, Engine ¿¡ ÀÖ´Â Logger ¿¡ ÀÇÇØ ±â·ÏµË´Ï´Ù. ±âº»ÀûÀ¸·Î, ÇØ´ç Logger ´Â $CATALINA_HOME/logs µð·ºÅ丮¿¡ log ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
MemoryRealm

¼Ò°³

MemoryRealmÀº Tomcat 4 Realm ÀÎÅÍÆäÀ̽ºÀÇ ´Ü¼øÇÑ ½Ã¹ü ±¸ÇöüÀÔ´Ï´Ù. ½ÇÁ¦ ¼­ºñ½ºÇϴµ¥ »ç¿ëÇϵµ·Ï ¼³°èµÈ °ÍÀÌ ¾Æ´Õ´Ï´Ù. ½Ãµ¿ÇÒ ¶§, MemoryRealm Àº ¸ðµç »ç¿ëÀÚ¿Í ÇØ´çµÇ´Â ¿ªÇÒÀ» XML ¹®¼­(±âº»ÀûÀ¸·Î, ÀÌ ¹®¼­´Â $CATALINA_HOME/conf/tomcat-users.xml ¿¡¼­ ºÒ·ÁÁý´Ï´Ù )·ÎºÎÅÍ ºÒ·¯µéÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀÇ µ¥ÀÌÅͰ¡ º¯°æµÉ °æ¿ì Tomcat À» Àç½ÃÀÛÇØ¾ß Àνĵ˴ϴÙ.

Realm ¿¤¸®¸ÕÆ®ÀÇ ¼Ó¼º

MemoryRealm ¼³Á¤ÇÏ·Á¸é, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ <Realm> ¿ä¼Ò¸¦ Ãß°¡Çϰí À§¿¡¼­ ¼³¸íÇÑ ´ë·Î ³»Àç½ÃÄÑ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¼Ó¼ºµéÀº ÀÌ ±¸Çö¿¡¼­ Áö¿øµÇ´Â °ÍµéÀÔ´Ï´Ù:

AttributeDescription
className

ÀÌ Realm ±¸ÇöüÀÇ Àüü Java Ŭ·¡½º ¸í. ¿©±â¿¡´Â ¹Ýµå½Ã "org.apache.catalina.realm.MemoryRealm" °ªÀ» ³Ö¾îÁà¾ß ÇÕ´Ï´Ù.

debug

°ü·ÃµÈ Logger ¿¡ ³²°ÜÁö´Â ÀÌ Realm Á¤º¸ÀÇ µð¹ö±ë Á¤º¸ ¼öÁØ. ³ôÀº ¼ýÀÚ´Â ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ³²±é´Ï´Ù. ±âº»°ªÀ¸·Î µð¹ö±ë Á¤º¸ ¼öÁØÀº 0 ÀÔ´Ï´Ù.

digest

ÀϹÝÀûÀÎ ÅØ½ºÆ®°¡ ¾Æ´Ñ ÇüÅ·Πºñ¹Ð¹øÈ£¸¦ ÀúÀåÇϴµ¥ »ç¿ëÇÏ´Â ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò. À¯È¿ÇÑ ¹ëºê´Â java.security.MessageDigest Ŭ·¡½º¿¡ ÀÇÇØ ¹Þ¾Æµé¿©Áö´Â ¾Ë°í¸®Áò¸íÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â Digested Passwords ¸¦ º¸½Ê½Ã¿À. ¸¸ÀÏ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é, ºñ¹Ð¹øÈ£´Â ÀÏ¹Ý ÅØ½ºÆ®·Î ÀúÀåµË´Ï´Ù.

pathname

À¯È¿ÇÑ »ç¿ëÀÚ¸í, ºñ¹Ð¹øÈ£, ¿ªÇÒÀ» °®°í ÀÖ´Â XML ¹®¼­ÀÇ Àý´ë ¶Ç´Â »ó´ëÀû ($CATALINA_HOME¿¡ ´ëÇØ) °æ·Î. ÀÌ ÆÄÀÏÀÇ Çü½Ä¿¡ °üÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾Æ·¡¿¡ ³ª¿ÍÀÖ½À´Ï´Ù. ±âº» °ªÀº conf/tomcat-users.xml ÀÔ´Ï´Ù.

»ç¿ëÀÚ ÆÄÀÏ Çü½Ä

»ç¿ëÀÚ ÆÄÀÏ(±âº»ÀûÀ¸·Î, conf/tomcat-users.xml)Àº root ¿ä¼Ò°¡ <tomcat-users>ÀÎ XML ¹®¼­À̾î¾ß ÇÕ´Ï´Ù. root ¿ä¼Ò ³»ºÎ¿¡ À¯È¿ÇÑ »ç¿ëÀÚ¸¶´Ù <user> ¿ä¼Ò°¡ ´ÙÀ½ ¼Ó¼ºÀ» °®°í ÀÖ¾î¾ß µË´Ï´Ù:

  • name - ·Î±×¿Â ÇÒ »ç¿ëÀÚ¸í.
  • password - ·Î±×¿ÂÇÒ ¶§ ÇÊ¿äÇÑ ºñ¹Ð¹øÈ£( <Realm> ¿ä¼Ò¿¡ digest ¼Ó¼ºÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é ÀÏ¹Ý ÅØ½ºÆ® ÇüÅÂÀ̰í, ¾Æ´Ï¸é ¿©±â¿¡¼­ ¼³¸íÇÑ ¾ç½Ä¿¡ µû¶ó¼­ ÀûÀýÇÏ°Ô ´ÙÀÌÁ¦½ºÆ®µÈ ÇüÅÂ).
  • roles - ÀÌ »ç¿ëÀÚ¿¡ ¿¬°üµÈ ½°Ç¥·Î ±¸ºÐµÈ ¿ªÇÒ¸í ¸ñ·Ï.

¿¹Á¦

Tomcat 4 ÀÇ ±âº» ¼³Ä¡¿¡´Â MemoryRealm ÀÌ <Engine> ¿ä¼Ò¿¡ ³»ÀçµÇ¾î ÀÖ°í, ¸ðµç °¡»ó È£½ºÆ®µé°ú À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡ Àû¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. conf/tomcat-users.xml ÆÄÀÏÀÇ ±âº» ³»¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù:

<tomcat-users>
  <user name="tomcat" password="tomcat" roles="tomcat" />
  <user name="role1"  password="tomcat" roles="role1"  />
  <user name="both"   password="tomcat" roles="tomcat,role1" />
</tomcat-users>

Ãß°¡ ÁÖÀÇ»çÇ× Additional Notes

MemoryRealm Àº ´ÙÀ½ ±ÔÄ¢¿¡ µû¶ó µ¿ÀÛÇÕ´Ï´Ù:

  • Tomcat ÀÌ ½ÃÀÛÇÒ ¶§, ¸ðµç Á¤ÀÇµÈ »ç¿ëÀÚ¿Í °ü°èµÈ Á¤º¸µéÀ» »ç¿ëÀÚ ÆÄÀÏ¿¡¼­ ºÒ·¯µéÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ º¯°æÇϸé ÅèĹÀ» Àç½Ãµ¿ÇÒ ¶§±îÁö Àû¿ëµÇÁö ¾Ê½À´Ï´Ù.
  • »ç¿ëÀÚ°¡ º¸È£µÈ ÀÚ¿ø¿¡ óÀ½À¸·Î Á¢±ÙÀ» ½ÃµµÇϸé Tomcat 4´Â ÀÌ Realm ÀÇ authenticate() ¸Þ¼Òµå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù.
  • ÀÏ´Ü »ç¿ëÀÚ°¡ ÀÎÁõÀ» Åë°úÇϸé, »ç¿ëÀÚ(ÀÌ¿¡ °ü°èµÈ ¿ªÇÒ) ´Â »ç¿ëÀÚ ·Î±×ÀÎ ±â°£µ¿¾È Tomcat ³»¿¡ ij½ÃµË´Ï´Ù. (FORM±â¹Ý ÀÎÁõ¿¡¼­´Â, ¼¼¼ÇÀÌ ½Ã°£ Á¾·áµÇ°Å³ª ¹«È¿È­ µÉ¶§±îÁö¸¦ ¶æÇϰí; BASIC ÀÎÁõ¿¡¼­´Â, »ç¿ëÀÚ°¡ ºê¶ó¿ìÀú¸¦ ´ÝÀ» ¶§±îÁö¸¦ ¶æÇÕ´Ï´Ù).
  • »ç¿ëÀÚ ÆÄÀÏ¿¡ ÀÖ´Â Á¤º¸ÀÇ °ü¸®´Â ÇØ´ç ¾ÖÇø®ÄÉÀ̼ÇÀÇ Ã¥ÀÓÀÔ´Ï´Ù. Tocmat Àº »ç¿ëÀÚ¿Í ¿ªÇÒÀ» À¯ÁöÇϱâ À§Çؼ­ ¾î¶°ÇÑ ³»ÀåµÈ ±â´Éµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù.
  • Realm ¿¡¼­ ·Î±×·Î ³²°ÜÁö´Â µð¹ö±ë°ú ¿¹¿Ü¸Þ½ÃÁö´Â, »ç¿ëµÇ°í Àִ ȯ°æÀÇ Context, Host, Engine ¿¡ ÀÖ´Â Logger ¿¡ ÀÇÇØ ±â·ÏµË´Ï´Ù. ±âº»ÀûÀ¸·Î, ÇØ´ç Logger ´Â $CATALINA_HOME/logs µð·ºÅ丮¿¡ log ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
°øÅë Æ¯¼º Common Features
Digested Passwords

Ç¥ÁØ Realm ±¸Çöü¿¡¼­ »ç¿ëÀÚ ºñ¹Ð¹øÈ£´Â (±âº»ÀûÀ¸·Î) ÀÏ¹Ý ÅØ½ºÆ®·Î ÀúÀåµË´Ï´Ù. ¸¹Àº ȯ°æ¿¡¼­, À̰ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇÏ¸é ¿ì¿¬È÷ ·Î±×¿Â ÇÒ ¼ö ÀÖ´Â ÀÎÁõµ¥ÀÌÅ͸¦ º» »ç¶÷ÀÌ ÀÖ´Ù¸é ±× µ¥ÀÌÅÍ·Î Á¢¼ÓÇÑ µÚ¿¡ ´Ù¸¥ »ç¶÷ÀÎô ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ·± ¹®Á¦¸¦ ÇÇÇϱâ À§Çؼ­, Ç¥ÁØ ±¸Çö¿¡¼­ »ç¿ëÀÚ ºñ¹Ð¹øÈ£ÀÇ ´ÙÀÌÁ¦½ºÆÃ digesting °³³äÀ» Áö¿øÇÕ´Ï´Ù. À̰ÍÀº ÀúÀåµÈ ºñ¹Ð¹øÈ£µéÀÌ (½±°Ô ÇØµ¶ÇÒ ¼ö ¾ø´Â ÇüÅ·Î) ¾Ïȣȭ½ÃÄÑÁÖ°í, Realm ±¸Çö¿¡¼­´Â ¿©ÀüÈ÷ ÀÎÁõ¿¡ »ç¿ëÇÒ ¼ö ÀְԵ˴ϴÙ.

<Realm> ¿ä¼Ò¿¡ digest ¼Ó¼ºÀ» ÁöÁ¤ÇÏ¸é ´ÙÀÌÁ¦½ºÆ®µÈ ºñ¹Ð¹øÈ£¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. ÀÌ ¼Ó¼ºÀ» À§ÇÑ °ªÀº java.security.MessageDigest Ŭ·¡½º°¡ Áö¿øÇÏ´Â ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò(SHA, MD2, or MD5) Áß¿¡ ÇϳªÀÔ´Ï´Ù. ÀÌ ¿É¼ÇÀ» ¼±ÅÃÇÒ ¶§, Realm¿¡ ÀúÀåµÈ ºñ¹Ð¹øÈ£ÀÇ ³»¿ëÀº ¼±ÅÃµÈ ¾Ë°í¸®ÁòÀ¸·Î ´ÙÀÌÁ¦½ºÆ®µÈ ÀϹÝÅØ½ºÆ®ÇüÅÂÀ̾î¾ß µË´Ï´Ù.

RealmÀÇ authenticate() ¸Þ¼Òµå°¡ È£ÃâµÉ ¶§, »ç¿ëÀÚÀÇ (ÀϹÝÅØ½ºÆ®) ºñ¹Ð¹øÈ£´Â °°Àº ¾Ë°í¸®ÁòÀ¸·Î ´ÙÀÌÁ¦½ºÆ®µÇ¾î¾ß µÇ°í, °á°ú´Â Realm¿¡¼­ ¹ÝȯµÇ´Â °ª°ú ºñ±³µË´Ï´Ù. ¿ø·¡ ºñ¹Ð¹øÈ£ÀÇ ÀϹÝÅØ½ºÆ® ÇüŰ¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °Í°ú °°´Ù´Â µî½ÄÀÌ ¼º¸³µÇ¸é, ÀÌ »ç¿ëÀÚ´Â ÀÎÁõÀ» Åë°úÇÕ´Ï´Ù.

ÀϹÝÅØ½ºÆ® ºñ¹Ð¹øÈ£ÀÇ ´ÙÀÌÁ¦½ºÆ®µÇ¾îÁø °ªÀ» °è»êÇϱâ À§ÇØ, µÎ °¡Áö Æí¸®ÇÑ ±â¼úÀÌ Áö¿øµË´Ï´Ù:

  • µ¿ÀûÀ¸·Î ´ÙÀÌÁ¦½ºÆ®µÈ ¾ÏÈ£¸¦ °è»êÇÒ Çʿ䰡 ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µç´Ù¸é, ¸Å°³º¯¼ö·Î ÀϹÝÅØ½ºÆ® ºñ¹Ð¹øÈ£¿Í ¾Ë°í¸®Áò À̸§À» ¹Þ´Â org.apache.catalina.realm.RealmBase Ŭ·¡½ºÀÇ Á¤Àû Digest() ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ´ÙÀÌÁ¦½ºÆ®µÈ ÆÐ½º¿öµå¸¦ ¹ÝȯÇÕ´Ï´Ù.
  • ´ÙÀÌÁ¦½ºÆ®µÈ ºñ¹Ð¹øÈ£¸¦ °è»êÇϱâ À§Çؼ­ Äֻܼ󿡼­ ½ÇÇàÇϱ⠿øÇÑ´Ù¸é, ´Ü¼øÈ÷ ´ÙÀ½Ã³·³ ½ÇÇàÇÏ¸é µË´Ï´Ù.
    java org.apache.catalina.realm.RealmBase \
        -a {algorithm} {cleartext-password}
    
    ±×·¸°Ô µÇ¸é Ç¥ÁØ Ãâ·ÂÀ¸·Î ÀϹÝÅØ½ºÆ® ÆÐ½º¿öµåÀÇ ´ÙÀÌÁ¦½ºÆ®µÈ °ªÀÌ ³ª¿É´Ï´Ù.

À§ÀÇ µÎ°¡Áö ¹æ¹ýÀ» »ç¿ëÇÏ·Á¸é, RealmBase Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ $CATALINA_HOME/server/lib/catalina.jar ÆÄÀÏÀÌ ±Û·¡½ºÆÐ½º¿¡ ÀâÇôÀÖ¾î¾ß µË´Ï´Ù.

¿¹Á¦ ¾ÖÇø®ÄÉÀÌ¼Ç Example Application

Tomcat 4 ¿¡ ÀÖ´Â ¿¹Á¦ ¾ÖÇø®ÄÉÀ̼ÇÀº form ±â¹Ý ·Î±×ÀÎÀÇ »ç¿ëÇØ¼­ º¸¾È Á¦ÇÑÀ¸·Î º¸È£µÇ´Â Áö¿ªÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. Á¢±Ù ÁÖ¼Ò´Â http://localhost:8080/examples/jsp/security/protected/ À̰í MemoryRealm ¿¡ ¼³¸íÇÑ »ç¿ëÀÚ¸í°ú ºñ¹Ð¹øÈ£ ÁßÀÇ Çϳª·Î ·Î±× ¿Â ÇÒ ¼ö ÀÖ½À´Ï´Ù.

°ü¸® ¾ÖÇø®ÄÉÀÌ¼Ç Manager Application

¸¸ÀÏ ¿î¿µÁßÀÎ Tomcat 4 ¿¡¼­ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³Ä¡¿Í Á¦°ÅÇϱâ À§Çؼ­ °ü¸® ¾ÖÇø®ÄÉÀÌ¼Ç Manager ApplicationÀ» »ç¿ëÇÏ·Á¸é, ¼±ÅÃµÈ Realm ±¸Çö¿¡¼­ Àû¾îµµ Çϳª ÀÌ»óÀÇ »ç¿ëÀÚ¸í¿¡ "manager" ¿ªÇÒÀ» Ãß°¡ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â °ü¸® À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ³»ÀÇ ¸ðµç ¿äû ÁÖ¼Ò¿¡ Á¢±ÙÇϱâ À§Çؼ­´Â "manager" º¸¾È Á¦ÇÑÀ» »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù.

º¸¾È¶§¹®¿¡ ±âº» Realm (Áï, conf/tomcat-users.xml À» »ç¿ëÇÏ´Â ) ¿¡´Â "manager" ¿ªÇÒ·Î ¼³Á¤µÈ »ç¿ëÀÚ¸íÀÌ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, Tomcat °ü¸®ÀÚ°¡ Ưº°È÷ ÀÌ ¿ªÇÒÀ» ÇÑ»ç¶÷ ÀÌ»ó ÁöÁ¤ÇØÁÖ±â Àü¿¡´Â ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ´Â ¾ø½À´Ï´Ù.


Copyright © 1999-2002, Apache Software Foundation