¸ñÂ÷
Zend_InfoCard
ÄÄÆÛ³ÍÆ®´Â,
Á¤º¸ Ä«µå (Information Cards) ÀÇ relying-party
¼Æ÷Æ®¸¦ ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.
Á¤º¸ Ä«µå´Â, ÀÎÅͳݻ󿡼ÀÇ À¯Àú ½Äº° Á¤º¸ÀÇ °ü¸®³ª
À¥ »çÀÌÆ®ÀÇ À¯Àú ÀÎÁõ (relying party (À¸)·ÎºÎÅÍ ÄÝ µË´Ï´Ù) µî¿¡ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
Á¤º¸ Ä«µå·Î ´ëÇØ¼, ȤÀº ÀÎÅͳݻóÀÇ ½Äº° ¸ÞŸ½Ã½ºÅÛ¿¡ ÀÖ¾î¼ÀÇ Á¤º¸ Ä«µåÀÇ Á߿伺¿¡ ´ëÇØ¼´Â, IdentityBlog (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
Zend_InfoCard
ÀÇ »ç¿ë¹ýÀº,
Zend_Auth
ÄÄÆÛ³ÍÆ®ÀÇ ÀϺημ
Zend_InfoCard
ÀÎÁõ ¾î´ðÅ͸¦ »ç¿ëÇÏ´ÂÁö,
ȤÀº ´ÜüÀÇ ÄÄÆÛ³ÍÆ®·Î¼ »ç¿ëÇÒ±îÀÇ ¸ÓÁö¾Ê¾ÆÀΰ¡ÀÔ´Ï´Ù.
¾î´À ÂÊÀÇ °æ¿ì¿¡ ´ëÇØ¼µµ, À¯Àú·ÎºÎÅÍ Á¤º¸ Ä«µå¸¦ ¹ÞÀ¸·Á¸é
HTML ÀÇ ·Î±×ÀÎ Æû Áß(¾È)¿¡¼ ´ÙÀ½°ú °°Àº HTML ºí·ÏÀ» »ç¿ëÇÕ´Ï´Ù.
<form action="http://example.com/server" method="POST">
<input type='image' src='/images/ic.png' align='center'
width='120px' style='cursor:pointer' />
<object type="application/x-informationCard"
name="xmlToken">
<param name="tokenType"
value="urn:oasis:names:tc:SAML:1.0:assertion" />
<param name="requiredClaims"
value="http://.../claims/privatepersonalidentifier
http://.../claims/givenname
http://.../claims/surname" />
</object>
</form>
ÀÌ ¿¹¿¡ ´ëÇϰí,requiredClaims
<param>
ű׷Π³ªÅ¸³»°í ÀÖ´Â °ÍÀÌ,
claim (»ç¶÷ÀÇ ¼º¸í µî) (À¸)·Î ºÒ¸®´Â ½Äº° Á¤º¸ÀÔ´Ï´Ù.
À̰ÍÀº, À¥ »çÀÌÆ® ("relying party")
ÇÏÁö¸¸ Á¤º¸ Ä«µå¿¡ ÀÇÇÑ ÀÎÁõÀ» ½Ç½ÃÇϱâ À§Çؼ ÇÊ¿äÇÕ´Ï´Ù.
À§ÀÇ HTML (À»)¸¦ À¯Àú°¡ ½ÇÇàÇÑ´Ù (Ŭ¸¯ÇÑ´Ù) ¶ó°í
ºê¶ó¿ìÀú´Â Ä«µå ¼±Åà ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
À̰ÍÀº, ±× »çÀÌÆ®ÀÇ ¿ä±¸¸¦ ä¿ì´Â Á¤º¸ Ä«µå¸¦ Ç¥½Ã½Ãų »Ó¸¸ ¾Æ´Ï¶ó,
Á¶°ÇÀ» ä¿ì´Â Á¤º¸ Ä«µå°¡ º¹¼ö Á¸ÀçÇÏ´Â °æ¿ì¿¡ ÁÁ¾ÆÇÏ´Â °ÍÀ» ¼±ÅýÃų ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Á¤º¸ Ä«µå´Â, ÁöÁ¤Çß´Ù URL ¿¡ XML ¹®¼·Î¼
POST
µÇ¾î À̰ÍÀ»
Zend_InfoCard
ÄÄÆÛ³ÍÆ®·Î ó¸®ÇÏ°Ô µË´Ï´Ù.
Á¤º¸ Ä«µå´Â,SSL ±×¸®°í ¾ÏÈ£ÈÇß´Ù URL ¿¡ÀÇ
HTTP POST
¹Û¿¡ ÇÒ ¼ö ¾ø´Â °Í¿¡ ÁÖÀÇÇսôÙ.
SSL ¿¡ ÀÇÇÑ ¾Ïȣȸ¦ ¼³Á¤ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â,
À¥ ¼¹öÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
ÀÌ ÄÄÆÛ³ÍÆ®¸¦ Zend_Auth
ÀÎÁõ ½Ã½ºÅÛ°ú Á¶ÇÕÇØ »ç¿ëÇÏ·Á¸é ,
Zend_Auth_Adapter_InfoCard
(À»)¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù
(À̰ÍÀº, ´Üü·Î ¹èÆ÷µÇ°í ÀÖ´Ù Zend_InfoCard
¿¡´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù).
ÀÌ ¼ö¹ýÀ¸·ÎÀÇ »ç¿ë¿¹¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.
<?php
require_once 'Zend/InfoCard/Auth/Adapter.php';
require_once 'Zend/Auth.php';
if (isset($_POST['xmlToken'])) {
$adapter = new Zend_Auth_Adapter_InfoCard($_POST['xmlToken']);
$adapter->addCertificatePair('/usr/local/Zend/apache2/conf/server.key',
'/usr/local/Zend/apache2/conf/server.crt');
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
switch ($result->getCode()) {
case Zend_Auth_Result::SUCCESS:
$claims = $result->getIdentity();
print "Given Name: {$claims->givenname}<br />";
print "Surname: {$claims->surname}<br />";
print "Email Address: {$claims->emailaddress}<br />";
print "PPI: {$claims->getCardID()}<br />";
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
print "The Credential you provided did not pass validation";
break;
default:
case Zend_Auth_Result::FAILURE:
print "There was an error processing your credentials.";
break;
}
if (count($result->getMessages()) > 0) {
print "<pre>";
var_dump($result->getMessages());
print "</pre>";
}
}
?>
<hr />
<div id="login" style="font-family: arial; font-size: 2em;">
<p>Simple Login Demo</p>
<form method="post">
<input type="submit" value="Login" />
<object type="application/x-informationCard" name="xmlToken">
<param name="tokenType" value="urn:oasis:names:tc:SAML:1.0:assertion" />
<param name="requiredClaims" value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" />
</object>
</form>
</div>
À§ÀÇ ¿¹¿¡¼´Â, ¿ì¼± ÃÖÃÊ·Î
Zend_Auth_Adapter_InfoCard
ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇϰí,
Ä«µå ½Ç·ºÅͷκÎÅÍ ¼Û½ÅµÇ¾ú´Ù XML µ¥ÀÌÅ͸¦ °Å±â¿¡ °Ç³×ÁÖ°í ÀÖ½À´Ï´Ù.
ÀνºÅϽº¸¦ ÀÛ¼ºÇϸé, ´ÙÀ½¿¡ SSL Áõ¸í¼ÀÇ ºñ¹Ð¿¼è/°ø°³¿¼è
Æä¾î¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ Æä¾î´Â,HTTP POST
(À»)¸¦ ¹ÞÀº À¥ ¼¹ö·Î »ç¿ëÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ ÆÄÀÏÀ» »ç¿ëÇϰí, ¼¹ö¿¡ ¼Û½ÅµÈ Á¤º¸ÀÇ Ç༱ÁöÀÇ °ËÁõÀ» ½Ç½ÃÇÕ´Ï´Ù.
Á¤º¸ Ä«µå¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â À̰͵éÀÌ ÇÊ¿äÇÕ´Ï´Ù.
¾î´ðÅÍÀÇ ¼³Á¤ÀÌ »ì¸é, ³ª¸ÓÁö´Â
Zend_Auth
ÀÇ Ç¥ÁØ ±â´ÉÀ» »ç¿ëÇØ Á¤º¸ Ä«µå ÅäÅ«ÀÇ °ËÁõÀ» ½Ç½ÃÇØ,
getIdentity()
±×¸®°í ÃëµæÇÑ ½Äº° Á¤º¸¸¦ ±âÃÊ·Î À¯ÀúÀÇ ÀÎÁõÀ» ½Ç½ÃÇÕ´Ï´Ù.
Zend_InfoCard ÄÄÆÛ³ÍÆ®¸¦,
±×°Í ´Üü·Î »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.±× °æ¿ì´Â
Zend_InfoCard
Ŭ·¡½º¸¦ Á÷Á¢ Á¶ÀÛÇÕ´Ï´Ù.
Zend_InfoCard Ŭ·¡½ºÀÇ »ç¿ë¹ýÀº,Zend_Auth
ÄÄÆÛ³ÍÆ®¿Í Á¶ÇÕÇØ »ç¿ëÇÏ´Â °æ¿ì¿Í °ÅÀÇ °°½À´Ï´Ù.
ÀÌÇÏ¿¡ »ç¿ë¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
<?php
require_once 'Zend/InfoCard.php';
if (isset($_POST['xmlToken'])) {
$infocard = new Zend_InfoCard();
$infocard->addCertificatePair('/usr/local/Zend/apache2/conf/server.key',
'/usr/local/Zend/apache2/conf/server.crt');
$claims = $infocard->process($_POST['xmlToken']);
if($claims->isValid()) {
print "Given Name: {$claims->givenname}<br />";
print "Surname: {$claims->surname}<br />";
print "Email Address: {$claims->emailaddress}<br />";
print "PPI: {$claims->getCardID()}<br />";
} else {
print "Error Validating identity: {$claims->getErrorMsg()}";
}
}
?>
<hr />
<div id="login" style="font-family: arial; font-size: 2em;">
<p>Simple Login Demo</p>
<form method="post">
<input type="submit" value="Login" />
<object type="application/x-informationCard" name="xmlToken">
<param name="tokenType" value="urn:oasis:names:tc:SAML:1.0:assertion" />
<param name="requiredClaims" value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" />
</object>
</form>
</div>
À§ÀÇ ¿¹¿¡¼´Â,Zend_InfoCard
ÄÄÆÛ³ÍÆ®¸¦ ´Üü·Î »ç¿ëÇϰí, À¯Àú°¡ ¼Û½ÅÇÑ ÅäÅ«À» °ËÁõÇϰí ÀÖ½À´Ï´Ù.
Zend_Auth_Adapter_InfoCard
ÀÇ °æ¿ì¿Í °°ÀÌ,
Zend_InfoCard
ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ°í ³ª¼
À¥ ¼¹öÀÇ SSL Áõ¸í¼ÀÇ °ø°³ Ű/ºñ¹Ð Ű Æä¾î¸¦ ¼³Á¤ÇÕ´Ï´Ù.
¼³Á¤ÀÌ »ì¸é,process()
¸Þ¼Òµå·Î Á¤º¸ Ä«µåÀÇ Ã³¸®¸¦ ½Ç½ÃÇØ ±× °á°ú¸¦ µ¹·ÁÁÝ´Ï´Ù.
Zend_InfoCard
ÀÇ »ç¿ë ¹æ¹ý
(´Üü·Î »ç¿ëÇϵ簡, ȤÀº Zend_Auth
ÀÇ ÀϺημ
Zend_Auth_Adapter_InfoCard
°æÀ¯·Î »ç¿ëÇÒ±î)
¿¡ °ü°è¾øÀÌ, Á¤º¸ Ä«µå¸¦ ó¸®ÇÑ °á°ú´Â
Zend_InfoCard_Claims
¿ÀºêÁ§Æ®·Î¼ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
ÀÌ ¿ÀºêÁ§Æ®¿¡´Â assertions (claims) ÇÏÁö¸¸ Æ÷ÇԵ˴ϴÙ.
À̰ÍÀº, À¯Àú ÀÎÁõ ½Ã¿¡ ´ç½ÅÀÇ »çÀÌÆ®°¡ ³½ ¿ä±¸¿¡ ÀǰÅÇϰí,
À¯Àú°¡ ¼Û½ÅÇÑ µ¥ÀÌÅͷκÎÅÍ ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù.
À§ÀÇ ¿¹·Î ³ªÅ¸³» º¸ÀÎ °Íó·³, Á¤º¸ Ä«µåÀÇ Å¸´ç¼ºÀ» È®ÀÎÇÏ·Á¸é
Zend_InfoCard_Claims::isVaild()
¸Þ¼Òµå¸¦ ÄÝ ÇÕ´Ï´Ù.claims ±×°ÍÀ» ÃëµæÇÏ·Á¸é ,
´Ü¼øÇÏ°Ô ½Äº°ÀÚ (givenname
µî)
(À»)¸¦ ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ·Î¼ ÁöÁ¤ÇØ ¾×¼¼½º ÇÏ´ÂÁö,
ȤÀº getClaim()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
´ëºÎºÐÀÇ °æ¿ì¿¡ ´ëÇØ getClaim()
¸Þ¼Òµå¸¦ »ç¿ëÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
±×·¯³ª, ¸¸¾à requiredClaims
ÇÏÁö¸¸ º¹¼öÀÇ ´Ù¸¥ ¼Ò½º/À̸§ °ø°£À¸·ÎºÎÅÍÀÇ Á¤º¸¸¦ ¿ä±¸Çϰí ÀÖ´Â °æ¿ì´Â,
±×°ÍÀ» ÀÌ ¸Þ¼Òµå·Î ¸í½ÃÀûÀ¸·Î ²¨³¾ Çʿ䰡 ÀÖ½À´Ï´Ù
(claim ÀÇ ¿ÏÀüÇÑ URI (À»)¸¦ ³ª, Á¤º¸ Ä«µåÁß¿¡¼ ±× °ªÀ» ÃëµæÇÕ´Ï´Ù).
ÀϹݷÐÀ¸·Î¼Zend_InfoCard
ÄÄÆÛ³ÍÆ®°¡ µðÆúÆ®·Î ¼³Á¤ÇÑ´Ù claim ¿ë URI
(Àº)´Â Á¤º¸ Ä«µå Áß(¾È)¿¡¼ °¡Àå Àß ÀÌ¿ëµÇ´Â °ÍÀÔ´Ï´Ù.
ÀÌ °æ¿ì´Â ´Ü¼øÇÏ°Ô ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇØ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.
°ËÁõ ó¸® Áß(¾È)¿¡¼ °³¹ßÀÚ°¡ ½Ç½ÃÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â ºÎºÐÀº,
Á¤º¸ Ä«µå³»ÀÇ claim ÀÇ ¹ßÇà¿øÀ» Á¶»çÇØ
±×°ÍÀ» ½Å·ÚÇÒ ¼ö ÀÖ´Â Á¤º¸¿øÀÎÁö ¾î¶²Áö¸¦ ÆÇÁ¤ÇÏ´Â °÷(Áß)ÀÔ´Ï´Ù.
À̰ÍÀ» ½Ç½ÃÇϱâ À§Çؼ,Zend_InfoCard_Claims
¿ÀºêÁ§Æ®¿¡´Â getIssuer()
¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, Á¤º¸ Ä«µåÀÇ claim ÀÇ ¹ßÇà¿ø URI (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù.
±âÁ¸ÀÇ ÀÎÁõ ½Ã½ºÅÛ¿¡ Á¤º¸ Ä«µåÀÇ ¼Æ÷Æ®¸¦ Ãß°¡ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
±×·¯±â À§Çؼ´Â,private personal identifier
(PPI) (À»)¸¦ ¿¾³¯ºÎÅÍÀÇ ÀÎÁõ ¾îÄ«¿îÆ®¿¡ ¹¯¾î,
ÃÖÀúÇÑÀÇ claim ÀÌ´Ù
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier
(À»)¸¦ ¸®Äù½ºÆ®ÀÇ requiredClaims
(À¸)·Î ÁöÁ¤ÇÕ´Ï´Ù.ÀÌ claim ÇÏÁö¸¸ ¿ä±¸µÇ¸é,
Zend_InfoCard_Claims
¿ÀºêÁ§Æ®´Â ±× Ä«µå¿ëÀÇ ÀÏÀÇÀÎ ½Äº°ÀÚ¸¦ ÁغñÇÕ´Ï´Ù.
À̰ÍÀº,getCardID()
¸Þ¼Òµå¿¡ ÀÇÇØ¼ ½Ç½ÃÇÕ´Ï´Ù.
Á¤º¸ Ä«µå¸¦ ±âÁ¸ÀÇ ¿¾³¯ºÎÅÍÀÇ ÀÎÁõ ¾îÄ«¿îÆ®¿¡ ÷ºÎÇÏ´Â ¿¹¸¦, ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.
<?php
// ...
public function submitinfocardAction()
{
if (!isset($_REQUEST['xmlToken'])) {
throw new ZBlog_Exception("Expected an encrypted token but was not provided");
}
$infoCard = new Zend_InfoCard();
$infoCard->addCertificatePair(SSL_CERTIFICATE_PRIVATE, SSL_CERTIFICATE_PUB);
try {
$claims = $infoCard->process($request['xmlToken']);
} catch(Zend_InfoCard_Exception $e) {
// TODO Error processing your request
throw $e;
}
if ($claims->isValid()) {
$db = ZBlog_Data::getAdapter();
$ppi = $db->quote($claims->getCardID());
$fullname = $db->quote("{$claims->givenname} {$claims->surname}");
$query = "UPDATE blogusers SET ppi = $ppi, real_name = $fullname WHERE username='administrator'";
try {
$db->query($query);
} catch(Exception $e) {
// TODO Failed to store in DB
}
$this->view->render();
return;
} else {
throw new ZBlog_Exception("Infomation card failed security checks");
}
}
?>
Zend_InfoCard
ÄÄÆÛ³ÍÆ®´Â,
Á¤º¸ Ä«µåÀÇ Ç¥ÁØ ±Ô°ÝÀÇ º¯È¿¡ ´ëÀÀÇϱâ À§Çؼ
¸ðµâ·¯ ±¸Á¶¸¦ ä¿ëÇϰí ÀÖ½À´Ï´Ù.
Çö½ÃÁ¡¿¡¼´Â, È®Àå Æ÷ÀÎÆ®ÀÇ »ó´ç¼ö´Â ¹Ì»ç¿ëÀ̹ǷΠ¹«½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸,
Á¤º¸ Ä«µåÀÇ ½ÇÀå¿¡ ´ëÇØ Çϳª¸¸ ½ÇÀåÇØ¾ß ÇÒ Á¡ÀÌ ÀÖ½À´Ï´Ù.
±×°ÍÀÌ Zend_InfoCard_Adapter
ÀÔ´Ï´Ù.
Zend_InfoCard
¾î´ðÅÍ´Â,
ÄÄÆÛ³ÍÆ®³»¿¡¼ ÄݹéÀ» »ç¿ëÇØ ´Ù¾çÇÑ Ã³¸®¸¦ ½Ç½ÃÇÕ´Ï´Ù.
¿¹¸¦ µé¾î, ÄÄÆÛ³ÍÆ®°¡ Á¤º¸ Ä«µå¸¦ ó¸®ÇÒ ¶§ÀÇ
Assertion ID ÀÇ º¸Á¸À̳ª ÃëµæµîÀ» ½Ç½ÃÇÕ´Ï´Ù.
¹ÞÀº Á¤º¸ Ä«µåÀÇ assertion ID ÀÇ º¸Á¸Àº Çʼö°¡ ¾Æ´Õ´Ï´Ù¸¸,
¸¸¾à °Å±â¿¡ ½ÇÆÐÇϸé, ¸®Ç÷¹ÀÌ °ø°Ý¿¡ ÀÇÇØ¼ ÀÎÁõÀ» ½Å·ÚÇÒ ¼ö ¾ø´Â °ÍÀÌ µÉ °¡´É¼ºÀÌ ¹ß»ýÇÕ´Ï´Ù.
À̰ÍÀ» ÇÇÇϱâ À§Çؼ´Â,
Zend_InfoCard_Adapter_Interface
(À»)¸¦ ½ÇÀåÇØ ±× ÀνºÅϽº¸¦ ¼³Á¤ÇÏ°í ³ª¼
process()
¸Þ¼Òµå (´Üü) ȤÀº authenticate()
¸Þ¼Òµå (Zend_Auth
¾î´ðÅÍ) (À»)¸¦ ÄÝ ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ¼³Á¤Çϱâ À§ÇÑ ¸Þ¼Òµå°¡
setAdapter()
ÀÔ´Ï´Ù.
ÀÌÇÏÀÇ ¿¹¿¡¼´Â,Zend_InfoCard
¾î´ðÅ͸¦ ¼³Á¤ÇØ ¾îÇø®ÄÉÀ̼dz»¿¡¼ »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
<?php
class myAdapter implements Zend_InfoCard_Adapter_Interface
{
public function storeAssertion($assertionURI, $assertionID, $conditions)
{
/* Store the assertion and its conditions by ID and URI */
}
public function retrieveAssertion($assertionURI, $assertionID)
{
/* Retrieve the assertion by URI and ID */
}
public function removeAssertion($assertionURI, $assertionID)
{
/* Delete a given assertion by URI/ID */
}
}
$adapter = new myAdapter();
$infoCard = new Zend_InfoCard();
$infoCard->addCertificatePair(SSL_PRIVATE, SSL_PUB);
$infoCard->setAdapter($adapter);
$claims = $infoCard->process($_POST['xmlToken']);
?>