¸ñÂ÷
Zend_Auth (Àº)´Â, ÀÎÁõÀ» À§ÇÑ API (À»)¸¦ Á¦°øÇÕ´Ï´Ù. ¶Ç, ÀϹÝÀûÀÎ »ç¿ë¿¹¿¡ ´ëÀÀÇÏ´Â ±¸»ó ÀÎÁõ ¾î´ðÅ͵µ ÁغñÇØ ÀÖ½À´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
Zend_Auth ¿¡´Â, ´ÙÀÌÁ¦½ºÆ® ÀÎÁõ¿ëÀÇ ¾î´ðÅÍ ¸¸ÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.À̰ÍÀº,Zend_Auth ÀÇ »ý°¢À» ¼³¸íÇϱâ À§ÇÑ ½ÉÇÃÇÑ ¼³°èÀÇ ¾î´ðÅÍÀÔ´Ï´Ù. ÇâÈÄ, ÇÑÃþ ´õ ¿©·¯°¡Áö ¾î´ðÅ͸¦ °³¹ßÇÒ ¿¹Á¤ÀÔ´Ï´Ù. ¡¸ÀÌ·± ¾î´ðÅ͸¦ °®°í ½Í´Ù¡¹¶ó°í ÇÏ´Â ºÐÀº ÀÖ½À´Ï±î? ±×·± ¿©·¯ºÐÀº, ²À ÅõÇ¥¿¡ Âü°¡ ÇØ ÁÖ¼¼¿ä.ȤÀº, ½º½º·Î ¸¸µé¾î ¹ö¸°´Ù Àǵµ ´ëȯ¿µÀÔ´Ï´Ù! |
Zend_Auth ÇÏÁö¸¸ Ãë±ÞÇÏ´Â °ÍÀº ¾îµð±îÁö³ª ÀÎÁõ (authentication) (À̾î)¿©, ½ÂÀÎ (authorization) (ÀÌ)°¡ ¾Æ´Õ´Ï´Ù. ÀÎÁõ (authentication) (¿Í)°ú´Â Áï, ¾î´À ¿£Æ¼Æ¼°¡ ´©±¸ÀÎÁö¸¦ ³ªÅ¸³½´Ù ( ½Äº°ÇÑ´Ù) ÀÏÀÔ´Ï´Ù.À̰ÍÀ», ÇϵîÀÇ Á¶°Ç¿¡ ÀǰÅÇØ ½Ç½ÃÇÕ´Ï´Ù. ½ÂÀÎ (authorization) (ÀÌ)¶õ, ¾î´À ¿£Æ¼Æ¼°¡ ´Ù¸¥ ¿£Æ¼Æ¼¿¡ ´ëÇØ¼ ¾×¼¼½º Çϰųª ¾î¶°ÇÑ Á¶ÀÛÀ» Çϰųª ÇÏ´Â ±ÇÇÑÀÌ ÀÖÀ»Áö¸¦ ÆÇÁ¤Çϴ ó¸®ÀÔ´Ï´Ù. À̰ÍÀº Zend_Auth ÀÇ ´ë»ó¿Ü°¡ µË´Ï´Ù. Zend Framework ¿¡ ÀÖ¾î¼ÀÇ ÀÎÁõÀ̳ª ¾×¼¼½º Á¦¾îÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, Zend_Acl (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
Zend_Auth ¾î´ðÅÍÀÇ »ç¿ë ¸ñÀûÀº, LDAP (ÀÌ)³ª RDBMS ȤÀº ÆÄÀÏ (¿Í)°ú °°Àº ƯÁ¤ÀÇ ÇüÅÂÀÇ ÀÎÁõ ¼ºñ½º¿¡ ´ëÇÑ ÀÎÁõÀ» ½Ç½ÃÇÏ´Â °ÍÀÔ´Ï´Ù. ¾î´ðÅÍ¿¡ ÀÇÇØ¼ ±× ¿É¼ÇÀ̳ª °Åµ¿Àº Å©°Ô ´Ù¸£°ÚÁö¸¸, ¸î°³ÀÇ ±âº» 󸮴Â, ¸ðµç ¾î´ðÅÍ·Î °øÅëÀÌ µË´Ï´Ù. ¿¹¸¦ µé¾î ÀÎÁõ Á¶°Ç ( À̸¥¹Ù ID) (À»)¸¦ ¹Þ¾Æ, ÀÎÁõÀ» ½Ç½ÃÇØ, ¾î¶°ÇÑ °á°ú¸¦ µ¹·ÁÁشٰí Çϴ ó¸®´Â, ¸ðµç Zend_Auth ¾î´ðÅÍ·Î °øÅëÀÔ´Ï´Ù.
°¢ Zend_Auth ÀÎÁõ ¾î´ðÅÍ´Â,Zend_Auth_Adapter_Interface
(À»)¸¦
½ÇÀåÇϰí ÀÖ½À´Ï´Ù.ÀÌ ÀÎÅÍÆäÀ̽º·Î Á¤Àǵǰí ÀÖ´Â ¸Þ¼Òµå°¡ authenticate()
±×¸®°í,
¾î´ðÅÍ Å¬·¡½º´Â À̰ÍÀ» ½ÇÀåÇϰí ÀÎÁõÀ» ½Ç½ÃÇÕ´Ï´Ù. °¢ ¾î´ðÅÍ Å¬·¡½º´Â,authenticate()
(À»)¸¦
ÄÝ Çϱâ Àü¿¡ Áغñ¸¦ ³¡¸¶ÃÄ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. Áï, ¾î´ðÅÍÃø¿¡¼ ÁغñÇØ¾ß ÇÏ´Â ±â´ÉÀ¸·Î¼´Â ÀÎÁõ Á¶°Ç ( À¯Àú¸í ¹× ÆÐ½º¿öµå µî)
ÀÇ ÃëµæÀ̳ª ¾î´ðÅÍ °íÀ¯ÀÇ ¿É¼ÇÀÇ ¼³Á¤ ( µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀ» »ç¿ëÇÏ´Â ¾î´ðÅͶó¸é µ¥ÀÌŸº£À̽º¿¡ÀÇ Á¢¼Ó ¼³Á¤ µî) ÇÏÁö¸¸ ÀÖ´Â
°ÍÀÔ´Ï´Ù.
ÀÌÇÏ¿¡ ÁÖ´Â °ÍÀº ÀÎÁõ ¾î´ðÅÍÀÇ »ùÇ÷Î, À̰ÍÀº À¯Àú¸íÀ¸·Î ÆÐ½º¿öµå¸¦ ¹Þ¾ÆµéÀ̰í ÀÎÁõÀ» ½Ç½ÃÇÕ´Ï´Ù. ±× ¿ÜÀÇ »ó¼¼, ¿¹¸¦ µé¸é ÀÎÁõ ¼ºñ½º¿¡ÀÇ ½ÇÁ¦ÀÇ ¹®ÀÇ µîÀº, ¿¹¸¦ °£°áÇÏ°Ô Çϱâ À§ÇÑ(ÇØ) »ý·« Çϰí ÀÖ½À´Ï´Ù.
<?php
require_once 'Zend/Auth/Adapter/Interface.php';
class MyAuthAdapter implements Zend_Auth_Adapter_Interface
{
/**
*
ÀÎÁõ¿ëÀÇ À¯Àú¸í°ú ÆÐ½º¿öµå¸¦ ¼³Á¤ÇÕ´Ï´Ù
*
* @return void
*/
public function __construct($username, $password)
{
// ...
}
/**
*
ÀÎÁõÀ» ½ÃµµÇÕ´Ï´Ù
*
* @throws Zend_Auth_Adapter_Exception
ÇÏÁö¸¸, ÀÎÁõ 󸮸¦ ÇÒ ¼ö ¾ø¾ú´ø °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù
* @return Zend_Auth_Result
*/
public function authenticate()
{
// ...
}
}
docblock ÄÚ¸àÆ®·Î ¼³¸íÇϰí ÀÖ´Â ´ë·Î, authenticate()
ÇÏ Zend_Auth_Result
(
ȤÀº Zend_Auth_Result
ÀÇ »ó¼Ó Ŭ·¡½º) ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÙ Çʿ䰡 ÀÖ½À´Ï´Ù.¾î¶°ÇÑ
ÀÌÀ¯·Î ÀÎÁõÀÇ ¹®ÀǸ¦ ÇÒ ¼ö ¾ø¾ú´ø °æ¿ì´Â, authenticate()
ÇÏ Zend_Auth_Adapter_Exception
(À¸)·ÎºÎÅÍ
ÆÄ»ýÇÑ ¿¹¿Ü¸¦ ½½·Î¿ì ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
Zend_Auth ¾î´ðÅÍ´Â,authenticate()
ÀÇ °á°ú·Î¼ Zend_Auth_Result
ÀÇ
ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÎÁõÀ» ½ÃµµÇÑ °á°ú¸¦ ³ªÅ¸³À´Ï´Ù.¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇßÀ» ¶§¿¡ Zend_Auth_Result
¿ÀºêÁ§Æ®°¡
ÀÛ¼ºµÇ¾î ÀÌÇÏÀÇ ¼¼ °³ÀÇ ¸Þ¼Òµå·Î Zend_Auth ¾î´ðÅÍÀÇ °á°ú¿¡ ´ëÇÑ °øÅëÀÇ Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
isValid()
- ±× °á°ú°¡ ÀÎÁõÀÇ ¼º°øÀ» ³ªÅ¸³»°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ true
(À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.
getIdentity()
- ÀÎÁõÀ» ½ÃµµÇß´Ù ID Á¤º¸¸¦ µ¹·ÁÁÝ´Ï´Ù.
getMessages()
- ÀÎÁõ¿¡ ½ÇÆÐÇßÀ» °æ¿ì¿¡, °ü·ÃÇÏ´Â ¸Þ¼¼ÁöÀÇ ¹è¿À»
µ¹·ÁÁÝ´Ï´Ù.
ÀÎÁõ Á¤º¸ ( ÆÐ½º¿öµå µî) (À»)¸¦ Æ÷ÇÔÇÑ ÀÎÁõÀ» ¿ä±¸ÇÏ´Â °ÍÀº Æí¸®ÇÑ °ÍÀÔ´Ï´Ù¸¸, ¸®Äù½ºÆ® ¸¶´Ù Çϳª Çϳª ÀÎÁõ Á¤º¸¸¦ ²ø°í ´Ù´Ï´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÎÁõ ³¡³ ID (À»)¸¦ °è¼Ó º¸°ü À¯ÁöÇÏ´Â °Íµµ Áß¿äÇÕ´Ï´Ù.
HTTP (Àº)´Â ½ºÅ×ÀÌÆ®·¹½ºÀÎ ÇÁ·ÎÅäÄÝÀÔ´Ï´Ù.±×·¯³ª, ÄíŰ³ª ¼¼¼ÇÀ̶ó°í ÇÏ´Â ±â¼ú¿¡ ÀÇÇØ¼, ¼¹ö »çÀ̵åÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼µµ º¹¼ö ¸®Äù½ºÆ®°£¿¡ ½ºÅ×ÀÌÆ® ( »óÅÂ) (À»)¸¦ º¸°ü À¯ÁöÇØ °è¼ÓµÇ°Ô µÇ¾ú½À´Ï´Ù. Zend_Auth (Àº)´Â, µðÆúÆ®·Î Zend_Session (À»)¸¦ »ç¿ëÇϰí ÀÖ¾î, ÀÎÁõ¿¡ ¼º°øÇÑ ÈÄÀÇ ID Á¤º¸¸¦ PHP ÀÇ ¼¼¼ÇÀ¸·Î ¿µ¼Ó °ü¸®Çϵµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.
ÀÎÁõ¿¡ ¼º°øÇϸé,Zend_Auth::authenticate()
ÇÏ ÀÎÁõ °á°úÀÇ
ID (À»)¸¦ ¿µ¼Ó ½ºÅ丮Áö¿¡ º¸Á¸ÇÕ´Ï´Ù.µðÆúÆ®¿¡¼´Â, Zend_Auth
ÇÏÁö¸¸ »ç¿ëÇÏ´Â
½ºÅ丮Áö Ŭ·¡½º´Â Zend_Session ¿¡
ÀǰÅÇÑ °ÍÀÌ µË´Ï´Ù. ½ºÅ丮Áö Ŭ·¡½º¸¦ º¯°æÇÏ·Á¸é , Zend_Auth::setStorage()
±×¸®°í
½ºÅ丮Áö ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
ÀÚµ¿ÀûÀ¸·Î ¿µ¼Ó ½ºÅ丮Áö¿¡ ID (À»)¸¦ º¸Á¸ÇÏ´Â °ÍÀº ¸ÀÀÌ ¾ø´Â °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·± °æ¿ì´Â,Zend_Auth
Ŭ·¡½º¸¦
»ç¿ëÇÏÁö ¾Ê°í ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ ÀÌ¿ëÇÕ´Ï´Ù.
Zend_Auth ÀÇ »ç¿ë¹ý¿¡´Â, ´ÙÀ½ÀÇ 2Åë°¡ ÀÖ½À´Ï´Ù.
°£Á¢ÀûÀ¸·Î Zend_Auth::authenticate()
°æÀ¯·Î »ç¿ëÇÑ´Ù
Á÷Á¢, ¾î´ðÅÍÀÇ authenticate()
¸Þ¼Òµå¸¦ »ç¿ëÇÑ´Ù
´ÙÀ½ÀÇ ¿¹´Â,Zend_Auth ¾î´ðÅ͸¦ °£Á¢ÀûÀ¸·Î Zend_Auth
Ŭ·¡½º·ÎºÎÅÍ
»ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
<?php
// Zend_Auth
ÀÇ ½Ì±Û Åæ ÀνºÅϽº¿¡ÀÇ ÂüÁ¶¸¦ ÃëµæÇÕ´Ï´Ù
require_once 'Zend/Auth.php';
$auth = Zend_Auth::getInstance();
//
ÀÎÁõ ¾î´ðÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$authAdapter = new MyAuthAdapter($username, $password);
//
ÀÎÁõÀ» ½ÃµµÇØ ±× °á°ú¸¦ ÃëµæÇÕ´Ï´Ù
$result = $auth->authenticate($authAdapter);
if (!$result->isValid()) {
//
ÀÎÁõ¿¡ ½ÇÆÐÇßÀ¸¹Ç·Î, ¿øÀÎÀ» Ç¥½ÃÇÕ´Ï´Ù
foreach ($result->getMessages() as $message) {
echo "$messagen";
}
} else {
//
ÀÎÁõ¿¡ ¼º°øÇß½À´Ï´Ù.ID ($username)
ÇÏÁö¸¸ ¼¼¼Ç¿¡ º¸Á¸µË´Ï´Ù
// $result->getIdentity() === $auth->getIdentity()
// $result->getIdentity() === $username
}
À§ÀÇ ¿¹¿¡ ´ëÇØ ¸®Äù½ºÆ®³»¿¡¼ ÀÎÁõÀ» Çϸé, ÀÎÁõ¿¡ ¼º°øÇßÀ» ¶§¿¡ ±× ID (À»)¸¦ ÃëµæÇÏ´Â °ÍÀº °£´ÜÇÑ ÀÏÀÔ´Ï´Ù.
<?php
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
// ID
ÇÏÁö¸¸ ÀÖÀ¸¹Ç·Î ±×°ÍÀ» ÃëµæÇÕ´Ï´Ù
$identity = $auth->getIdentity();
}
¿µ¼Ó ½ºÅ丮Áö·ÎºÎÅÍ ÀÎÁõ ID (À»)¸¦ »èÁ¦ÇÏ·Á¸é , ´Ü¼øÇÏ°Ô clearIdentity()
¸Þ¼Òµå¸¦
»ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, ¾îÇø®ÄÉÀ̼ÇÀÇ "
·Î±×¾Æ¿ô"
󸮸¦ ½ÇÀåÇϱâ À§ÇÑÀÇ °ÍÀÔ´Ï´Ù.
<?php
Zend_Auth::getInstance()->clearIdentity();
ÀÚµ¿ÀûÀ¸·Î ¿µ¼Ó ½ºÅ丮Áö°¡ ÀÌ¿ëµÇ´Â °ÍÀÌ ¸ÀÀÌ ¾ø´Â °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·± °æ¿ì´Â,Zend_Auth
Ŭ·¡½º¸¦
¿ìȸµµ·Î ÇØ ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ »ç¿ëÇÕ´Ï´Ù. ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ »ç¿ëÇÑ´Ù´Â °ÍÀº, ¾î´ðÅÍ ¿ÀºêÁ§Æ®ÀÇ ¼³Á¤°ú Áغñ¸¦ ½Ç½ÃÇØ, ±× authenticate()
¸Þ¼Òµå¸¦
ÄÝ ÇÏ´Â °ÍÀÔ´Ï´Ù. ¾î´ðÅÍ °íÀ¯ÀÇ »ó¼¼ Á¤º¸¿¡ ´ëÇØ¼´Â, °¢ ¾î´ðÅÍÀÇ ¹®¼·Î ¼³¸íÇÕ´Ï´Ù. ÀÌÇÏÀÇ ¿¹´Â,MyAuthAdapter
(À»)¸¦
Á÷Á¢ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
<?php
//
ÀÎÁõ ¾î´ðÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù
$authAdapter = new MyAuthAdapter($username, $password);
//
ÀÎÁõÀ» ½ÃµµÇØ ±× °á°ú¸¦ ÃëµæÇÕ´Ï´Ù
$result = $authAdapter->authenticate();
if (!$result->isValid()) {
//
ÀÎÁõ¿¡ ½ÇÆÐÇßÀ¸¹Ç·Î, ¿øÀÎÀ» Ç¥½ÃÇÕ´Ï´Ù
foreach ($result->getMessages() as $message) {
echo "$messagen";
}
} else {
//
ÀÎÁõ¿¡ ¼º°øÇß½À´Ï´Ù
// $result->getIdentity() === $username
}