Zend_Infocard作为Zend Authentication的一部分

时间:2010-07-08 15:13:58

标签: php zend-framework infocard

我正在尝试实现找到here的基本示例:

在标题为“使用作为Zend_Auth的一部分”的部分下。

我有Zend Framework版本1.10,Apache 2.2.11,我正在使用带有“Cardspace for Firefox 3”扩展的Firefox。

登录页面出现(从文档中的示例中复制),我可以选择一张信息卡(来自卡片选择器)并“发送”它但是我在返回时收到错误:

array
0 => string 'Processing Failure' (length=18)
1 => string 'Failed to extract assertion document' (length=36)

在调试此错误时,错误是由以下代码行引起的(抛出异常,因为不存在类型):

在Zend_InfoCard_Xml_EncryptedData-> getInstance()中,存在以下代码:

$sxe = simplexml_load_string($strXmlData);
switch($sxe['Type']) {
    case 'http://www.w3.org/2001/04/xmlenc#Element':
        include_once 'Zend/InfoCard/Xml/EncryptedData/XmlEnc.php';
        return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_EncryptedData_XmlEnc');
    default:
        require_once 'Zend/InfoCard/Xml/Exception.php';
        throw new Zend_InfoCard_Xml_Exception("Unknown EncryptedData type found");
break;

问题是当我把它丢弃时,我的xml中没有'Type'。

xml看起来像这样:

<saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="SamlSecurityToken-9f068262-1b53-5cac-844e-624d589f9373" Issuer="http://schemas.xmlsoap.org/ws/2005/05/identity/issuer/self" IssueInstant="2010-07-08T15:08:48.343Z" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">

....然后继续(带有签名值和其他项目,但同样没有类型)。

显然我在这里做错了。我想知道它是否与firefox插件有关,或者是否缺乏使用SSL(现在不使用SSL)。

1 个答案:

答案 0 :(得分:0)

从文档(http://framework.zend.com/manual/en/zend.infocard.basics.html#zend.infocard.basics.theory - 底部):

  

注意,信息卡只能通过HTTP发布到SSL加密的URL。有关如何设置SSL加密的信息,请参阅Web服务器的文档。