Á¦3 Àå Zend_Auth

¸ñÂ÷

3.1. µµÀÔ
3.1.1. ¾î´ðÅÍ
3.1.2. °á°ú
3.1.3. ID ÀÇ ¿µ¼Ó¼º
3.1.4. Zend_Auth ÀÇ »ç¿ë¹ý
3.2. ´ÙÀÌÁ¦½ºÆ® ÀÎÁõ
3.2.1. µµÀÔ
3.2.2. »ç¿ë
3.2.3. ID

3.1. µµÀÔ

Zend_Auth (Àº)´Â, ÀÎÁõÀ» À§ÇÑ API (À»)¸¦ Á¦°øÇÕ´Ï´Ù. ¶Ç, ÀϹÝÀûÀÎ »ç¿ë¿¹¿¡ ´ëÀÀÇÏ´Â ±¸»ó ÀÎÁõ ¾î´ðÅ͵µ ÁغñÇØ ÀÖ½À´Ï´Ù.

[
ÁÖÀÇ] ÁÖÀÇ

Zend_Auth ¿¡´Â, ´ÙÀÌÁ¦½ºÆ® ÀÎÁõ¿ëÀÇ ¾î´ðÅÍ ¸¸ÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.À̰ÍÀº,Zend_Auth ÀÇ »ý°¢À» ¼³¸íÇϱâ À§ÇÑ ½ÉÇÃÇÑ ¼³°èÀÇ ¾î´ðÅÍÀÔ´Ï´Ù. ÇâÈÄ, ÇÑÃþ ´õ ¿©·¯°¡Áö ¾î´ðÅ͸¦ °³¹ßÇÒ ¿¹Á¤ÀÔ´Ï´Ù. ¡¸ÀÌ·± ¾î´ðÅ͸¦ °®°í ½Í´Ù¡¹¶ó°í ÇÏ´Â ºÐÀº ÀÖ½À´Ï±î? ±×·± ¿©·¯ºÐÀº, ²À ÅõÇ¥¿¡ Âü°¡ ÇØ ÁÖ¼¼¿ä.ȤÀº, ½º½º·Î ¸¸µé¾î ¹ö¸°´Ù Àǵµ ´ëȯ¿µÀÔ´Ï´Ù!

Zend_Auth ÇÏÁö¸¸ Ãë±ÞÇÏ´Â °ÍÀº ¾îµð±îÁö³ª ÀÎÁõ (authentication) (À̾î)¿©, ½ÂÀÎ (authorization) (ÀÌ)°¡ ¾Æ´Õ´Ï´Ù. ÀÎÁõ (authentication) (¿Í)°ú´Â Áï, ¾î´À ¿£Æ¼Æ¼°¡ ´©±¸ÀÎÁö¸¦ ³ªÅ¸³½´Ù ( ½Äº°ÇÑ´Ù) ÀÏÀÔ´Ï´Ù.À̰ÍÀ», ÇϵîÀÇ Á¶°Ç¿¡ ÀǰÅÇØ ½Ç½ÃÇÕ´Ï´Ù. ½ÂÀÎ (authorization) (ÀÌ)¶õ, ¾î´À ¿£Æ¼Æ¼°¡ ´Ù¸¥ ¿£Æ¼Æ¼¿¡ ´ëÇØ¼­ ¾×¼¼½º Çϰųª ¾î¶°ÇÑ Á¶ÀÛÀ» Çϰųª ÇÏ´Â ±ÇÇÑÀÌ ÀÖÀ»Áö¸¦ ÆÇÁ¤Çϴ ó¸®ÀÔ´Ï´Ù. À̰ÍÀº Zend_Auth ÀÇ ´ë»ó¿Ü°¡ µË´Ï´Ù. Zend Framework ¿¡ À־ÀÇ ÀÎÁõÀ̳ª ¾×¼¼½º Á¦¾îÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, Zend_Acl (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

3.1.1. ¾î´ðÅÍ

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 (À¸)·ÎºÎÅÍ ÆÄ»ýÇÑ ¿¹¿Ü¸¦ ½½·Î¿ì ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

3.1.2. °á°ú

Zend_Auth ¾î´ðÅÍ´Â,authenticate() ÀÇ °á°ú·Î¼­ Zend_Auth_Result ÀÇ ÀνºÅϽº¸¦ µ¹·ÁÁÝ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÎÁõÀ» ½ÃµµÇÑ °á°ú¸¦ ³ªÅ¸³À´Ï´Ù.¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇßÀ» ¶§¿¡ Zend_Auth_Result ¿ÀºêÁ§Æ®°¡ ÀÛ¼ºµÇ¾î ÀÌÇÏÀÇ ¼¼ °³ÀÇ ¸Þ¼Òµå·Î Zend_Auth ¾î´ðÅÍÀÇ °á°ú¿¡ ´ëÇÑ °øÅëÀÇ Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • isValid() - ±× °á°ú°¡ ÀÎÁõÀÇ ¼º°øÀ» ³ªÅ¸³»°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ true (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • getIdentity() - ÀÎÁõÀ» ½ÃµµÇß´Ù ID Á¤º¸¸¦ µ¹·ÁÁÝ´Ï´Ù.

  • getMessages() - ÀÎÁõ¿¡ ½ÇÆÐÇßÀ» °æ¿ì¿¡, °ü·ÃÇÏ´Â ¸Þ¼¼ÁöÀÇ ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù.

3.1.3. ID ÀÇ ¿µ¼Ó¼º

ÀÎÁõ Á¤º¸ ( ÆÐ½º¿öµå µî) (À»)¸¦ Æ÷ÇÔÇÑ ÀÎÁõÀ» ¿ä±¸ÇÏ´Â °ÍÀº Æí¸®ÇÑ °ÍÀÔ´Ï´Ù¸¸, ¸®Äù½ºÆ® ¸¶´Ù Çϳª Çϳª ÀÎÁõ Á¤º¸¸¦ ²ø°í ´Ù´Ï´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÎÁõ ³¡³­ ID (À»)¸¦ °è¼Ó º¸°ü À¯ÁöÇÏ´Â °Íµµ Áß¿äÇÕ´Ï´Ù.

HTTP (Àº)´Â ½ºÅ×ÀÌÆ®·¹½ºÀÎ ÇÁ·ÎÅäÄÝÀÔ´Ï´Ù.±×·¯³ª, ÄíŰ³ª ¼¼¼ÇÀ̶ó°í ÇÏ´Â ±â¼ú¿¡ ÀÇÇØ¼­, ¼­¹ö »çÀ̵åÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ º¹¼ö ¸®Äù½ºÆ®°£¿¡ ½ºÅ×ÀÌÆ® ( »óÅÂ) (À»)¸¦ º¸°ü À¯ÁöÇØ °è¼ÓµÇ°Ô µÇ¾ú½À´Ï´Ù. Zend_Auth (Àº)´Â, µðÆúÆ®·Î Zend_Session (À»)¸¦ »ç¿ëÇϰí ÀÖ¾î, ÀÎÁõ¿¡ ¼º°øÇÑ ÈÄÀÇ ID Á¤º¸¸¦ PHP ÀÇ ¼¼¼ÇÀ¸·Î ¿µ¼Ó °ü¸®Çϵµ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.

ÀÎÁõ¿¡ ¼º°øÇϸé,Zend_Auth::authenticate() ÇÏ ÀÎÁõ °á°úÀÇ ID (À»)¸¦ ¿µ¼Ó ½ºÅ丮Áö¿¡ º¸Á¸ÇÕ´Ï´Ù.µðÆúÆ®¿¡¼­´Â, Zend_Auth ÇÏÁö¸¸ »ç¿ëÇÏ´Â ½ºÅ丮Áö Ŭ·¡½º´Â Zend_Session ¿¡ ÀǰÅÇÑ °ÍÀÌ µË´Ï´Ù. ½ºÅ丮Áö Ŭ·¡½º¸¦ º¯°æÇÏ·Á¸é , Zend_Auth::setStorage() ±×¸®°í ½ºÅ丮Áö ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

ÀÚµ¿ÀûÀ¸·Î ¿µ¼Ó ½ºÅ丮Áö¿¡ ID (À»)¸¦ º¸Á¸ÇÏ´Â °ÍÀº ¸ÀÀÌ ¾ø´Â °æ¿ìµµ ÀÖ°ÚÁö¿ä. ±×·± °æ¿ì´Â,Zend_Auth Ŭ·¡½º¸¦ »ç¿ëÇÏÁö ¾Ê°í ¾î´ðÅÍ Å¬·¡½º¸¦ Á÷Á¢ ÀÌ¿ëÇÕ´Ï´Ù.

3.1.4. Zend_Auth ÀÇ »ç¿ë¹ý

Zend_Auth ÀÇ »ç¿ë¹ý¿¡´Â, ´ÙÀ½ÀÇ 2Åë°¡ ÀÖ½À´Ï´Ù.

  1. °£Á¢ÀûÀ¸·Î Zend_Auth::authenticate() °æÀ¯·Î »ç¿ëÇÑ´Ù

  2. Á÷Á¢, ¾î´ðÅÍÀÇ 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
}