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 ±¸Çöü 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 À» ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ´Ü°è¸¦ µû¶ó¾ßÇÕ´Ï´Ù:
- À§¿¡ ¾ð±ÞÇÑ ÇüÅÂÀÇ Table ÀÌ ¾ø´Ù¸é, À§ ¿ä°Ç¿¡ ¸Â´Â Å×À̺í°ú Ä÷³À»
¸¸µå½Ê½Ã¿À.
- Àû¾îµµ Àб⠰¡´ÉÇÑ ¼Ó¼ºÀ» °¡Áø À§¿¡ ±â¼úµÈ Å×À̺íÀ» »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º
»ç¿ëÀÚ¸í°ú ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇϽʽÿÀ. (TomcatÀº À̵é Å×ÀÌºí¿¡ ¾²±â ÀÛ¾÷À»
Àý´ë ÇÏÁö ¾Ê½À´Ï´Ù.)
- »ç¿ëÇÒ JDBC µå¶óÀ̹ö¸¦
$CATALINA_HOME/server/lib µð·ºÅ丮(À¥
¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¢±ÙÇÏÁö ¾Ê¾Æµµ µÈ´Ù¸é)³ª ¶Ç´Â
$CATALINA_HOME/common/lib µð·ºÅ丮(Tomcat 4 ¿Í À¥
¾ÖÇø®ÄÉÀÌ¼Ç ¸ðµÎ »ç¿ëÇÑ´Ù¸é) ¿¡ º¹»çÇϽʽÿÀ. ÁÖÀÇÇÒ Á¡Àº
¿ÀÁ÷ JAR ÆÄÀϸ¸ Àνĵ˴ϴÙ!
$CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼ ¾Æ·¡Ã³·³
<Realm> ¿¤¸®¸ÕÆ®¸¦ ¼³Á¤ÇϽʽÿÀ.
- Tomcat 4 ¸¦ Àç½Ãµ¿ÇϽʽÿÀ.
Realm ¿¤¸®¸ÕÆ® ¼Ó¼ºµé
JDBCRealm À» ¼³Á¤ÇÏ·Á¸é, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼
<Realm> ¿¤¸®¸ÕÆ®¸¦ Ãß°¡Çϰí À§¿¡¼
¼³¸íÇÑ ´ë·Î ³»Àç½ÃÄÑ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¼Ó¼ºµéÀº ÀÌ ±¸Çö¿¡¼ Áö¿øµÇ´Â °ÍµéÀÔ´Ï´Ù:
| Attribute | Description |
|---|
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 À» ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ´Ü°è°¡ ÇÊ¿äÇÕ´Ï´Ù:
- µð·ºÅ丮 ¼¹öÀÇ ±¸¼ºµÈ ½ºÅ°¸¶°¡ À§¿¡ ³ª¿µÈ ¿ä±¸»çÇ׵鿡 ºÎÇյǴÂÁö ¸ÕÀú
È®ÀÎÇÕ´Ï´Ù.
- ÇÊ¿äÇÏ´Ù¸é, Tomcat ¿¡¼ »ç¿ëÇÒ »ç¿ëÀÚ¸í°ú ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÕ´Ï´Ù. À§¿¡ ±â¼úµÈ
Á¤º¸¿¡ Àû¾îµµ ÀбâÀü¿ë Á¢¼Ó±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. (Tomcat Àº ÀÌ Á¤º¸¸¦
Àý´ë ¼öÁ¤ÇÏ·Á°í ÇÏÁö ¾Ê½À´Ï´Ù.)
- »ç¿ëÇÒ JNDI µå¶óÀ̹ö(ÀüÇüÀûÀ¸·Î JNDI°¡ °¡´ÉÇÑ
ldap.jar)¸¦
$CATALINA_HOME/server/lib µð·ºÅ丮 ³»¿¡ º¹»çÇØ ³õ°Å³ª(À¥
¾ÖÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¶ó¸é) , ¶Ç´Â
$CATALINA_HOME/common/lib µð·ºÅ丮¿¡ º¹»çÇØ ³õ½À´Ï´Ù(Tomcat 4
¿Í À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¸ðµÎ »ç¿ëÇÏ´Â µå¶óÀ̹ö¶ó¸é).
$CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ ¾Æ·¡¿Í °°ÀÌ
<Realm> ¿¤¸®¸ÕÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.
- ±¸µ¿ÁßÀ̶ó¸é Tomcat 4¸¦ Àç½Ãµ¿ÇÕ´Ï´Ù.
Realm ¿¤¸®¸ÕÆ® ¼Ó¼ºµé
Realm Element Attributes
JNDIRealm ¼³Á¤ÇÏ·Á¸é, À§¿¡¼ ¼³¸íÇÑ ´ë·Î
$CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ <Realm>
¿ä¼Ò¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ ±¸Çö¿¡ Áö¿øµÇ´Â ¼Ó¼ºµéÀº ´ÙÀ½°ú °°½À´Ï´Ù:
| Attribute | Description |
|---|
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> ¿ä¼Ò¸¦ Ãß°¡Çϰí À§¿¡¼
¼³¸íÇÑ ´ë·Î ³»Àç½ÃÄÑ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¼Ó¼ºµéÀº ÀÌ ±¸Çö¿¡¼ Áö¿øµÇ´Â °ÍµéÀÔ´Ï´Ù:
| Attribute | Description |
|---|
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 ÆÄÀÏÀÌ ±Û·¡½ºÆÐ½º¿¡
ÀâÇôÀÖ¾î¾ß µË´Ï´Ù.
|
| °ü¸® ¾ÖÇø®ÄÉÀÌ¼Ç Manager Application |
¸¸ÀÏ ¿î¿µÁßÀÎ Tomcat 4 ¿¡¼ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³Ä¡¿Í Á¦°ÅÇϱâ À§Çؼ
°ü¸® ¾ÖÇø®ÄÉÀÌ¼Ç Manager ApplicationÀ»
»ç¿ëÇÏ·Á¸é, ¼±ÅÃµÈ Realm ±¸Çö¿¡¼ Àû¾îµµ Çϳª ÀÌ»óÀÇ »ç¿ëÀÚ¸í¿¡ "manager"
¿ªÇÒÀ» Ãß°¡ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â °ü¸® À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ³»ÀÇ
¸ðµç ¿äû ÁÖ¼Ò¿¡ Á¢±ÙÇϱâ À§Çؼ´Â "manager" º¸¾È Á¦ÇÑÀ» »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù.
º¸¾È¶§¹®¿¡ ±âº» Realm (Áï, conf/tomcat-users.xml À» »ç¿ëÇÏ´Â
) ¿¡´Â "manager" ¿ªÇÒ·Î ¼³Á¤µÈ »ç¿ëÀÚ¸íÀÌ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, Tomcat °ü¸®ÀÚ°¡
Ưº°È÷ ÀÌ ¿ªÇÒÀ» ÇÑ»ç¶÷ ÀÌ»ó ÁöÁ¤ÇØÁÖ±â Àü¿¡´Â ÀÌ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÒ ¼ö
ÀÖ´Â »ç¿ëÀÚ´Â ¾ø½À´Ï´Ù.
|
|
|