28.3. Zend_OpenId_Provider

Zend_OpenId_Provider (Àº)´Â,OpenID ¼­¹ö¸¦ ½ÇÀåÇϱâ À§Çؼ­ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. º»Àå¿¡¼­´Â ¿ì¼± µ¿ÀÛÇÏ´Â ¼­¹ö¸¦ ÀÛ¼ºÇϱâ À§ÇÑ Ãʺ¸ÀûÀÎ ¿¹¸¦ ¼³¸íÇÕ´Ï´Ù. ±×·¯³ª, ½ÇÁ¦·Î ¿î¿ëÇÑ´Ù OpenID ¼­¹ö (www.myid.net µîÀÌ °°Àº °Í) (À»)¸¦ ½ÇÀåÇÏ·Á¸é , º¸´Ù º¹ÀâÇÑ ¹®Á¦¿¡ ´ëÀÀÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

28.3.1. Äü ½ºÅ¸Æ®

ÀÌÇÏÀÇ ½Äº°ÀÚ´Â,Zend_OpenId_Provider::register (À»)¸¦ »ç¿ëÇØ À¯Àú ¾îÄ«¿îÆ®¸¦ ÀÛ¼ºÇÏ´Â Äڵ带 Æ÷ÇÔÇÕ´Ï´Ù. rel="openid.server" ÇÏÁö¸¸ ÁöÁ¤µÇ¾î ÀÖ´Â ¸µÅ© ¿ä¼Ò´Â, Àڱ⠺δãÀÇ ¼­¹ö ½ºÅ©¸³Æ®¸¦ °¡¸®Å°°í ÀÖ½À´Ï´Ù.ÀÌ ½Äº°ÀÚ¸¦ OpenID ´ëÀÀÀÇ »çÀÌÆ®¿¡ ¼Û½ÅÇϸé, ÀÌ ¼­¹ö»ó¿¡¼­ÀÇ ÀÎÁõÀ» ½Ç½ÃÇÕ´Ï´Ù.

<html> º¸´Ù ÀüÀÇ ÄÚµå´Â, ÀÚµ¿ÀûÀ¸·Î À¯Àú ¾îÄ«¿îÆ®¸¦ ÀÛ¼ºÇϱâ À§ÇÑ ¾à°£ÀÇ ÁÖ¼úÀÔ´Ï´Ù. ½ÇÁ¦ÀÇ ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ÀÌ·¯ÇÑ ÄÚµå´Â ºÒÇÊ¿äÇÕ´Ï´Ù.

·Ê 28.11. ½Äº°ÀÚ


<?php
require_once "Zend/OpenId/Provider.php";
define("TEST_SERVER"Zend_OpenId::absoluteURL("example-8.php"));
define("TEST_ID"Zend_OpenId::selfURL());
define("TEST_PASSWORD""123");
$server = new Zend_OpenId_Provider();
if (!
$server->hasUser(TEST_ID)) {
    
$server->register(TEST_IDTEST_PASSWORD);
}
?>
<html><head>
<link rel="openid.server" href="<?php echo TEST_SERVER;?>" />
</head><body>
<?php echo TEST_ID;?>
</body></html>

´ÙÀ½ÀÇ ½Äº° ¼­¹ö ½ºÅ©¸³Æ®´Â,OpenID ´ëÀÀÀÇ »çÀÌÆ®·ÎºÎÅÍÀÇ 2Á¾·ùÀÇ ¸®Äù½ºÆ® (°ü·ÃÁö¾î¿Í ÀÎÁõ) (À»)¸¦ ó¸®ÇÕ´Ï´Ù.¾î´À ÂÊ¿¡ ´ëÇØ¼­µµ, °°Àº ¸Þ¼Òµå Zend_OpenId_Provider::handle ±×¸®°í ó¸®ÇÕ´Ï´Ù. Zend_OpenId_Provider ¿¡ °Ç³×ÁÖ´Â µÎ Àμö´Â ·Î±×ÀÎ URL (¿Í)°ú ½Å·Ú°¡ ³¡³­ ÆäÀÌÁöÀÇ URL ±×¸®°í, À̰͵éÀº ÃÖÁ¾ »ç¿ëÀڷκÎÅÍ ÁöÁ¤µÈ °ÍÀÔ´Ï´Ù.

¼º°øÇßÀ» °æ¿ì,Zend_OpenId_Provider::handle ¸Þ¼Òµå´Â ¹®ÀÚ¿­À» µ¹·ÁÁÝ´Ï´Ù.À̰ÍÀº ±×´ë·Î OpenID ´ëÀÀÀÇ »çÀÌÆ®¿¡ µÇµ¹¸®Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ½ÇÆÐÇßÀ» °æ¿ì´Â false (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ¿¹¿¡¼­´Â, ½ÇÆÐÇßÀ» °æ¿ì¿¡ HTTP 403 ¸®½ºÆù½º¸¦ µ¹·ÁÁÖ°í ÀÖ½À´Ï´Ù. ÀÌ ÆäÀÌÁö¸¦ À¥ ºê¶ó¿ìÀú·Î Ç¥½ÃÇÏ·Á°í Çϸé, HTTP 403 ¸®½ºÆù½º°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.¸®Äù½ºÆ®°¡ OpenID Çü½ÄÀº ¾Æ´Ï¾ú±â ¶§¹®ÀÔ´Ï´Ù.

·Ê 28.12. ½ÉÇÃÇÑ ½Äº° ÇÁ·Î¹ÙÀÌ´õ


<?php
require_once "Zend/OpenId/Provider.php";
$server = new Zend_OpenId_Provider("example-8-login.php""example-8-trust.php");
$ret $server->handle();
if (
is_string($ret)) {
    echo 
$ret;
} else if (
$ret !== true) {
    
header('HTTP/1.0 403 Forbidden');
    echo 
'Forbidden';
}

ÀÌ Ã³¸®, ±×¸®°í ±× ÈÄÀÇ ´ëÈ­ Çü½ÄÀÇ ½ºÅ©¸³Æ®¿¡¼­´Â ½ÃÅ¥¾îÀÎ Á¢¼Ó (HTTPS) (À»)¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù. À̰ÍÀº, ÆÐ½º¿öµåÀÇ ´©¼³À» ¸·±â (À§ÇØ)¶§¹®ÀÔ´Ï´Ù.

´ÙÀ½ÀÇ ½ºÅ©¸³Æ®´Â, ½Äº° ¼­¹ö Zend_OpenId_Provider ¿ë¹«ÀÇ ·Î±×ÀÎ È­¸éÀ» ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù. À¯Àú°¡ ¾ÆÁ÷ ·Î±×ÀÎÇϰí ÀÖÁö ¾Ê´Â °æ¿ì´Â, ÀÌ ÆäÀÌÁö¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù. ÀÌ ÆäÀÌÁö·Î À¯Àú°¡ ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ°í ·Î±×ÀÎÀ» ½Ç½ÃÇÕ´Ï´Ù.

ÀÌ ½Äº°ÀÚ ½ºÅ©¸³Æ®·ÎºÎÅÍÀÇ À¯Àú ·¹Áö½ºÆ®·¹À̼ǽÃÀÇ ÆÐ½º¿öµå´Â "123" ÀÔ´Ï´Ù.

¼Û½ÅÇϸé, ÀÌ ½ºÅ©¸³Æ®´Â Zend_OpenId_Provider::login ¿¡ ÃÖÁ¾ »ç¿ëÀÚÀÇ ½Äº°ÀÚ¿Í ÆÐ½º¿öµå¸¦ °Ç³×ÁÖ¾î, ½Äº° ÇÁ·Î¹ÙÀÌ´õÀÇ ½ºÅ©¸³Æ®¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù. ¼º°øÇßÀ» °æ¿ì,Zend_OpenId_Provider::login (Àº)´Â ÃÖÁ¾ »ç¿ëÀÚ¿Í ½Äº° ÇÁ·Î¹ÙÀÌ´õÀÇ »çÀÌÀÇ ¼¼¼ÇÀ» È®¸³ÇØ, ·Î±×ÀÎÇÑ À¯ÀúÀÇ Á¤º¸¸¦ º¸Á¸ÇÕ´Ï´Ù. ±× ÀÌÈÄ, µ¿ÀÏ À¯Àú·ÎºÎÅÍÀÇ ¸®Äù½ºÆ®¿¡¼­´Â (´Ù¸¥ OpenID ´ëÀÀ À¥ »çÀÌÆ®·ÎºÎÅÍÀÇ °ÍÀ̾ú´Ù°í ÇØµµ) ÀÎÁõ 󸮰¡ ºÒÇÊ¿äÇØÁý´Ï´Ù.

ÀÌ ¼¼¼ÇÀº, ÃÖÁ¾ »ç¿ëÀÚ¿Í ½Äº° ÇÁ·Î¹ÙÀÌ´õÀÇ »çÀ̸¸ÀÇ °ÍÀÓ¿¡ ÁÖÀÇÇսôÙ. OpenID ´ëÀÀÀÇ »çÀÌÆ®´Â, ÀÌ ¼¼¼Ç¿¡ ´ëÇØ ¾Æ¹«°Íµµ ¾Ë ¼ö ¾ø½À´Ï´Ù.

·Ê 28.13. ½ÉÇÃÇÑ ·Î±×ÀÎ È­¸é


<?php
require_once "Zend/OpenId/Provider.php";
$server = new Zend_OpenId_Provider();

if (
$_SERVER['REQUEST_METHOD'] == 'POST' &&
    isset(
$_POST['openid_action']) &&
    
$_POST['openid_action'] === 'login' &&
    isset(
$_POST['openid_identifier']) &&
    isset(
$_POST['openid_password'])) {
    
$server->login($_POST['openid_identifier'], $_POST['openid_password']);
    
Zend_OpenId::redirect("example-8.php"$_GET);
}
?>
<html><body>
<form method="post"><fieldset>
<legend>OpenID ·Î±×ÀÎ</legend>
<table border=0>
<tr><td>Name:</td><td><input type="text" name="openid_identifier" value="<?php
echo $_GET['openid_identity'];
?>"></td></tr>
<tr><td>Password:</td><td><input type="text" name="openid_password" value=""></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" name="openid_action" value="login"></td></tr>
</table></fieldset></form></body></html>

À¯Àú°¡ ·Î±×ÀÎÇϰí ÀÖ´Ù°í ÇÏ´Â °Í ¸¸À¸·Î´Â, ÀÎÁõÀÌ ¼º°øÇß´Ù°í´Â ´Ü¾ðÇÒ ¼ö ¾ø½À´Ï´Ù. °³°³ÀÇ OpenID ´ëÀÀ »çÀÌÆ®¿¡ µµÂøÇϰí, ±×°ÍÀ» ½Å·ÚÇÒÁö¸¦ À¯Àú°¡ °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ ½Å·Ú È­¸éÀº, ÃÖÁ¾ »ç¿ëÀÚ¿¡ ±×°ÍÀ» ¼±ÅýÃŰ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¼±ÅÃÀº, ÇöÀçÀÇ ¸®Äù½ºÆ®¸¸ ½Ç½ÃÇϵ簡, ȤÀº "¿µ±¸È÷" ½Ç½ÃÇÒ±îÀÇ ¾ðÁ¨°¡µË´Ï´Ù. ÈÄÀÚÀÇ °æ¿ì´Â, ½Å·ÚÇÏ´Â »çÀÌÆ®/ÇÏÁö ¾Ê´Â »çÀÌÆ® ÀÇ Á¤º¸°¡ ³»ºÎ µ¥ÀÌŸº£À̽º¿¡ º¸Á¸µÇ¾î ÀÌ »çÀÌÆ®·ÎºÎÅÍÀÇ ´ÙÀ½ ¹ø ÀÌÈÄÀÇ ÀÎÁõ ¸®Äù½ºÆ®´Â ÀÚµ¿ÀûÀ¸·Î ó¸®µÇ°Ô µË´Ï´Ù.

·Ê 28.14. ½ÉÇÃÇÑ ½Å·Ú È­¸é


<?php
require_once "Zend/OpenId/Provider.php";
$server = new Zend_OpenId_Provider();

if (
$_SERVER['REQUEST_METHOD'] == 'POST' &&
    isset(
$_POST['openid_action']) &&
    
$_POST['openid_action'] === 'trust') {

    if (isset(
$_POST['allow'])) {
        if (isset(
$_POST['forever'])) {
            
$server->allowSite($server->getSiteRoot($_GET));
        }
        
$server->respondToConsumer($_GET);
    } else if (isset(
$_POST['deny'])) {
        if (isset(
$_POST['forever'])) {
            
$server->denySite($server->getSiteRoot($_GET));
        }
        
Zend_OpenId::redirect($_GET['openid_return_to'], array('openid.mode'=>'cancel'));
    }
}
?>
<html><body>
<p><a href="<?php echo $server->getSiteRoot($_GET);?>">
<?php echo $server->getSiteRoot($_GET);?></a> ±×·¸´Ù°í ÇÏ´Â »çÀÌÆ®°¡, ´ç½ÅÀÇ ½Äº° URL
<a href="<?php echo $server->getLoggedInUser();?>">
<?php echo $server->getLoggedInUser();?></a> ÀÇ È®ÀÎÀ» ¿ä±¸ÇØ ¿Ô½À´Ï´Ù.</p>
<form method="post">
<input type="checkbox" name="forever">
<label for="forever">¿µ±¸È÷</label><br>
<input type="hidden" name="openid_action" value="trust">
<input type="submit" name="allow" value="Çã°¡ÇÑ´Ù">
<input type="submit" name="deny" value="°ÅºÎÇÑ´Ù">
</form></body></html>

½ÇÁ¦·Î ¿î¿ëµÇ°í ÀÖ´Ù OpenID ¼­¹ö´Â, Åë»óÀº Simple Registration Extension ¿¡ ´ëÀÀÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀ» »ç¿ëÇϸé, À¯Àú¿¡ ´ëÇÑ Á¤º¸¸¦ ÄÁ½´¸Ó(consumer)°¡ ÇÁ·Î¹ÙÀÌ´õ¿¡ ¹®ÀÇÇÏ´Â °ÍÀÌ °¡´ÉÇØÁý´Ï´Ù. ÀÌ °æ¿ì, ½Å·Ú ³¡³­ ÆäÀÌÁö¿¡¼­´Â À¯ÀúÀÇ Á¤º¸¸¦ ÃëµæÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

28.3.2. ¸ðµç °ÍÀ» Á¶ÇÕÇÑ´Ù

ÇÁ·Î¹ÙÀÌ´õÀÇ ¸ðµç ÇÔ¼ö¸¦ ÇϳªÀÇ ½ºÅ©¸³Æ®¿¡ Á¤¸®ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì´Â ·Î±×ÀÎ URL (¿Í)°ú ½Å·Ú°¡ ³¡³­ »óÅ URL (Àº)´Â »ý·« µÇ¾î Zend_OpenId_Provider (Àº)´Â µ¿ÀÏ ÆäÀÌÁö¿¡ GET Àμö "openid.action" (À»)¸¦ Ãß°¡ÇÑ Àå¼Ò¸¦ °¡¸®Å°°Ô µË´Ï´Ù.

´ÙÀ½ÀÇ ¿¹´Â ¿ÏÀüÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù. ÃÖÁ¾ »ç¿ëÀÚ Àü¿ëÀÇ GUI (À»)¸¦ Á¦°øÇϰí ÀÖ¾ú½À´Ï´Ù¸¸, ·Î±×Àΰú ½Å·Ú 󸮸¦ ÀÚµ¿ÀûÀ¸·Î ½Ç½ÃÇÕ´Ï´Ù. À̰ÍÀº »ùÇÃÀ» °¡´ÉÇÑ ÇÑ ½ÉÇÃÇϰÔÇϱâ À§ÇÑ Ã³Ä¡À̸ç, ½ÇÁ¦ÀÇ ¼­¹ö¿¡¼­´Â, ¹æ±ÝÀüÀÇ »ùÇðú °°Àº Äڵ嵵 ÇÊ¿äÇÕ´Ï´Ù.

·Ê 28.15. ¸ðµç °ÍÀ» Áý°èÇÑ °Í


<?php
require_once "Zend/OpenId/Provider.php";
$server = new Zend_OpenId_Provider();

define("TEST_ID"Zend_OpenId::absoluteURL("example-9-id.php"));
define("TEST_PASSWORD""123");

if (
$_SERVER['REQUEST_METHOD'] == 'GET' &&
    isset(
$_GET['openid_action']) &&
    
$_GET['openid_action'] === 'login') {
    
$server->login(TEST_IDTEST_PASSWORD);
    unset(
$_GET['openid_action']);
    
Zend_OpenId::redirect(Zend_OpenId::selfUrl(), $_GET);
} else if (
$_SERVER['REQUEST_METHOD'] == 'GET' &&
    isset(
$_GET['openid_action']) &&
    
$_GET['openid_action'] === 'trust') {
    unset(
$_GET['openid_action']);
    
$server->respondToConsumer($_GET);
} else {
    
$ret $server->handle();
    if (
is_string($ret)) {
        echo 
$ret;
    } else if (
$ret !== true) {
        
header('HTTP/1.0 403 Forbidden');
        echo 
'Forbidden';
    }
}

ÀÌ ¿¹¸¦ ¹æ±ÝÀüÀÇ º¹¼ö ÆäÀÌÁö ºÐÇ񮂡ú ºñ±³ÇØ º¸¸é, ¹èºÐ ó¸®ÀÇ ÄÚµå ÀÌ¿ÜÀÇ Â÷ÀÌ´Â 1À̳ª °÷ »ÓÀÎ °Í¿¡ ´«Ä¡ äÀ̰ÚÁö¿ä. ±×·¡.unset($_GET['openid_action']) ÀÇ ºÎºÐÀÔ´Ï´Ù. ÀÌ unset (Àº)´Â, ´ÙÀ½ÀÇ ¸®Äù½ºÆ®¸¦ ¸ÞÀÎ Çڵ鷯¿¡ µ¹¸®±â À§Çؼ­ ÇÊ¿äÇÕ´Ï´Ù.

28.3.3. Simple Registration Extension

´ÙÀ½¿¡ ³ªÅ¸³»´Â ½Äº°ÀÚ ÆäÀÌÁö¿¡´Â, ¶Ç´Ù½Ã ÁÖ¼úÀÌ Â¥³Ö¾îÁö°í ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­´Â »õ·Î¿î À¯Àú ¾îÄ«¿îÆ®ÀÇ ÀÛ¼ºÀ» ½Ç½ÃÇØ, ±×°ÍÀ» ÇÁ·ÎÆÄÀÏ (´Ð³×ÀÓ°ú ÆÐ½º¿öµå) (¿Í)°ú °ü·ÃÁþ°í ÀÖ½À´Ï´Ù. ½ÇÁ¦ÀÇ È¯°æ¿¡¼­´Â ÀÌ·¯ÇÑ Ã³¸®´Â ºÒÇÊ¿äÇÕ´Ï´Ù.ÃÖÁ¾ »ç¿ëÀÚ´Â OpenID ¼­¹ö»ó¿¡¼­ ÀÌ·¯ÇÑ Á¤º¸¸¦ µî·ÏÇϱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯³ª, ÀÌ·¯ÇÑ µî·Ï¿ëÀÇ GUI ÀÇ ½ÇÀå¿¡ ´ëÇØ¼­´Â ÀÌ ¸Þ´º¾ó¿¡¼­´Â ´Ù·çÁö ¾Ê½À´Ï´Ù.

·Ê 28.16. ÇÁ·ÎÆÄÀÏÀ» °ü·ÃÁöÀº ½Äº°ÀÚ


<?php
require_once "Zend/OpenId/Provider.php";
require_once 
"Zend/OpenId/Extension/Sreg.php";
define("TEST_SERVER"Zend_OpenId::absoluteURL("example-10.php"));
define("TEST_ID"Zend_OpenId::selfURL());
define("TEST_PASSWORD""123");
$server = new Zend_OpenId_Provider();
if (!
$server->hasUser(TEST_ID)) {
    
$server->register(TEST_IDTEST_PASSWORD);
    
$server->login(TEST_IDTEST_PASSWORD);
    
$sreg = new Zend_OpenId_Extension_Sreg(array(
        
'nickname' =>'test',
        
'email' => 'test@test.com'
    
));
    
$root Zend_OpenId::absoluteURL(".");
    
Zend_OpenId::normalizeUrl($root);
    
$server->allowSite($root$sreg);
    
$server->logout();
}
?>
<html><head>
<link rel="openid.server" href="<?php echo TEST_SERVER;?>" />
</head><body>
<?php echo TEST_ID;?>
</body></html>

ÀÌ ½Äº°ÀÚ¸¦ OpenID ´ëÀÀÀÇ »çÀÌÆ® (¿©±â¿¡¼­´Â, ¹æ±ÝÀüÀÇ ÀåÀÇ Simple Registration Extension ÀÇ »ùÇÃÀ» »ç¿ëÇÕ´Ï´Ù) ¿¡ °Ç³×ÁÖ¾î, ±× »çÀÌÆ®´Â ´ÙÀ½ÀÇ OpenID ¼­¹ö ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÕ´Ï´Ù.

À̰ÍÀº, ¹æ±ÝÀüÀÇ "¸ðµç °ÍÀ» Á¶ÇÕÇÑ´Ù" ¿¹¸¦ Á¶±Ý º¯°æÇÑ °ÍÀÔ´Ï´Ù. ÀÚµ¿ ·Î±×ÀÎÀÇ ±¸Á¶´Â°ú °°ÀÌ »ç¿ëÇϰí ÀÖ½À´Ï´Ù¸¸, ½Å·Ú°¡ ³¡³­ ÆäÀÌÁö¿¡ °üÇÑ Á¤º¸´Â Æ÷ÇÔÇϰí ÀÖÁö ¾Ê½À´Ï´Ù. À¯Àú´Â À̹Ì, ÀÌ »ùÇÃÀÇ ½ºÅ©¸³Æ®¸¦ "¿µ±¸È÷" ½Å·ÚÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀ» ½Ç½ÃÇϰí ÀÖ´Â °ÍÀº, ½Äº°ÀÚ ½ºÅ©¸³Æ®ÀÇ Zend_OpenId_Provider::alowSite ¸Þ¼ÒµåÀÔ´Ï´Ù. °°Àº ¸Þ¼Òµå·Î ÇÁ·ÎÆÄÀϰú ½Å·Ú°¡ ³¡³­ »óÅ URL (À»)¸¦ °ü·ÃÁö¾î ½Å·Ú°¡ ³¡³­ »óÅ URL (À¸)·ÎºÎÅÍ ¸®Äù½ºÆ®°¡ ÀÖ¾úÀ» °æ¿ì¿¡ ÀÌ ÇÁ·ÎÆÄÀÏÀÌ ÀÚµ¿ÀûÀ¸·Î µ¹·ÁÁÖ¾îÁý´Ï´Ù.

Simple Registration Extension (À»)¸¦ µ¿ÀÛ½Ã۱â À§Çؼ­ À¯ÀÏ ÇÊ¿äÇÑ °ÍÀº, Zend_OpenId_Extension_Sreg ÀÇ ¿ÀºêÁ§Æ®¸¦ Zend_OpenId_Provider::handle ÀÇ 2 ¹øÂ°ÀÇ Àμö·Î¼­ °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù.

·Ê 28.17. SREG (À»)¸¦ »ç¿ëÇÑ ÇÁ·Î¹ÙÀÌ´õ


<?php
require_once "Zend/OpenId/Provider.php";
require_once 
"Zend/OpenId/Extension/Sreg.php";
$server = new Zend_OpenId_Provider();
$sreg = new Zend_OpenId_Extension_Sreg();

define("TEST_ID"Zend_OpenId::absoluteURL("example-10-id.php"));
define("TEST_PASSWORD""123");

if (
$_SERVER['REQUEST_METHOD'] == 'GET' &&
    isset(
$_GET['openid_action']) &&
    
$_GET['openid_action'] === 'login') {
    
$server->login(TEST_IDTEST_PASSWORD);
    unset(
$_GET['openid_action']);
    
Zend_OpenId::redirect(Zend_OpenId::selfUrl(), $_GET);
} else if (
$_SERVER['REQUEST_METHOD'] == 'GET' &&
    isset(
$_GET['openid_action']) &&
    
$_GET['openid_action'] === 'trust') {
   echo 
"½Å·Ú ¹ÞÁö ¾ÊÀº µ¥ÀÌÅÍ" ;
} else {
    
$ret $server->handle(null$sreg);
    if (
is_string($ret)) {
        echo 
$ret;
    } else if (
$ret !== true) {
        
header('HTTP/1.0 403 Forbidden');
        echo 
'Forbidden';
    }
}

28.3.4. ±× À̿ܿ¡´Â?

OpenID ¼­¹öÀÇ ÀÛ¼ºÀº, OpenID ´ëÀÀÀÇ »çÀÌÆ®ÀÇ ÀÛ¼º(Á¤µµ)¸¸Å­ ºó¹øÈ÷ ½Ç½ÃÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. °Å±â¼­,Zend_OpenId_Consumer ÀÇ ¸Þ´º¾ó°ú´Â ´Þ¶ó Zend_OpenId_Provider ÀÇ ¸Þ´º¾ó¿¡¼­´Â ¸ðµç ±â´ÉÀ» ¸Á¶óÇÏ´Â °ÍÀ» ±×¸¸µÓ´Ï´Ù.

³²¾Æ ÀÖ´Â ±â´É¿¡ ´ëÇØ °£´ÜÇÏ°Ô Á¤¸®Çϸé, ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.

  • ÃÖÁ¾ »ç¿ëÀÚ Àü¿ëÀÇ GUI ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇϱâ À§ÇÑ ¸Þ¼Òµå±º. À¯ÀúÀÇ µî·Ï, ½Å·Ú°¡ ³¡³­ »çÀÌÆ®³ª ÇÁ·ÎÆÄÀÏÀÇ ¼³Á¤µîÀ» ½Ç½ÃÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù.

  • À¯Àú³ª »çÀÌÆ®, ÇÁ·ÎÆÄÀÏÀ̶ó°í ÇÏ´Â Á¤º¸¸¦ °Ý³³Çϱâ À§ÇÑ Ãß»óÈ­ µÈ º¸Á¸ ·¹À̾î. ¿©±â¿¡´Â, ÇÁ·Î¹ÙÀÌ´õ¿Í OpenID ´ëÀÀ »çÀÌÆ®¿ÍÀÇ °ü·ÃÁö¾î Á¤º¸µµ º¸Á¸ÇÕ´Ï´Ù. ÀÌ ·¹À̾î´Â Zend_OpenId_Consumer ÀÇ °Í°ú ¸Å¿ì Àß ´à¾Ò½À´Ï´Ù. µðÆúÆ®¿¡¼­´Â ÆÄÀÏ ½ºÅ丮Áö¸¦ »ç¿ëÇÕ´Ï´Ù¸¸, ´Ù¸¥ ½ÇÀåÀ¸·Î ¿Å°Ü³õ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.

  • ÃÖÁ¾ »ç¿ëÀÚÀÇ À¥ ºê¶ó¿ìÀú¿Í ·Î±×ÀÎ ½Äº°ÀÚ¸¦ °ü·ÃÁþ±â À§ÇÑ, À¯Àú °ü·ÃÁö¾îÀÇ Ãß»óÈ­ ·¹À̾î.

Zend_OpenId_Provider (Àº)´Â, OpenID ¼­¹ö¸¦ ½ÇÀåÇÒ ¼ö ÀÖ´Â Àü±â´ÉÀ» ¼­Æ÷Æ®Çϰí ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù (¿¹¸¦ µé¾î µðÁöÅÐ Áõ¸í¼­ µî).±×·¯³ª, Zend_OpenId_Extension (À»)¸¦ »ç¿ëÇϰųª ¾ÆÀÌ Å¬·¡½º¸¦ ÀÛ¼ºÇϰųª Çϰí, °£´ÜÇÏ°Ô È®ÀåÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.