SAML IDP传递给AssertionConsumerService的消息中缺少<saml:issuer>(尽管存在)

时间:2018-07-17 01:27:07

标签: php single-sign-on saml-2.0 simplesamlphp

因此,我仅对我们的网站实施一个sso。我们没有可供人们登录的任何其他Web应用程序/软件,这只是为了节省他们不必在我们的网站上输入凭据的时间,仅此而已,所以这是一个非常基本的一对一类型的SSO,根据用户的x509证书和传递给他们的数据进行身份验证,以验证用户身份。另外,我正在使用simplesamlphp。

我似乎已经正确地实现了所有功能,并且处于测试阶段。我有一些代码用来生成经过sp验证的saml请求,因此我决定用它来测试我的代码。当我发布数据时,我会不断得到未定义发行人的信息,即使它是明确定义的。它是否存在似乎没有什么区别,不断地抛出相同的错误,我无法用它来验证实际的saml,更不用说了。

我正在用我的证书正确签署请求以进行验证。我使用的代码与我们从站点登录到他们的不同SSO的效果很好。

这是我要发送的xml:

<samlp:Response ID="###" Version="2.0" IssueInstant="2018-07-17T01:16:06Z" Destination="###" 
 xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<samlp:Issuer>http://127.0.0.1</samlp:Issuer>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:default="http://www.w3.org/2000/09/xmldsig#"
                xmlns:default1="http://www.w3.org/2001/10/xml-exc-c14n#" Version="2.0"
                ID="###" IssueInstant="2018-07-17T01:16:06Z">

    <saml:Subject>
        <saml:NameID>The NameID for this subject</saml:NameID>
        <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml:SubjectConfirmationData
                    Recipient="###"></saml:SubjectConfirmationData>
        </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:AttributeStatement>
        <saml:Attribute Name="KeyField1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                        FriendlyName="KeyField1">
            <saml:AttributeValue>123456</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute Name="Email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                        FriendlyName="email_secondary">
            <saml:AttributeValue></saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute Name="LastName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                        FriendlyName="last_name">
            <saml:AttributeValue>Test</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute Name="FirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                        FriendlyName="first_name">
            <saml:AttributeValue>Data</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
    <saml:AuthnStatement AuthnInstant="2018-07-17T01:16:06Z">
        <saml:AuthnContext>
            <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
        </saml:AuthnContext>
    </saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>

我已经阅读了simplesamlphp期望发行者在响应中,而不是我在哪里,它嵌套在另一个属性中,但是似乎也没有影响它,并且引发了相同的错误。我已经尝试过samlp:Issuer标签以及saml:Issuer,什么也没有。

这是我第一次配置并将传入的SSO请求发送到我们的服务器,因此,我肯定会丢失一些东西。上面的xml是未签名的基本请求。任何人都能提供的任何帮助都将非常棒!

0 个答案:

没有答案