当前位置: 首页 > 知识库问答 >
问题:

Ping联邦成员在验证SAML响应时抛出错误:cvc-complex-type.2.4c

龙正初
2023-03-14

我正在向 Ping Federate 发送 SAML 响应。如果 SAML 响应包含 SAML 属性,则它可以正常工作,而如果 SAML 响应不包含 SAML 属性,则会引发以下错误:

响应XML无效。错误:[error: cvc-plic-type.2.4c:预期元素'Attribute@urn: oasis: name: tc: SAML: 2.0: assertionEncryptedAttribute@urn: oasis: name: tc: SAML: 2.0: assertion'在元素AttributeStatement@urn: oasis: name: tc: SAML: 2.0: assertion]中的内容结束之前。

下面是抛出此错误的SAML响应(没有SAML属性):

<?xml version="1.0" encoding="UTF-8"?>
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://test/sp/ACS.saml2" ID="frtgckggfpwphf_vxeatxzlvgrq" IssueInstant="2018-08-30T11:50:38.183Z" Version="2.0">
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">Test</saml2:Issuer>
    <saml2p:Status>
        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </saml2p:Status>
    <saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_4947dc191f01c1e98d448c2fadd5c289" IssueInstant="2018-08-30T11:50:38.183Z" Version="2.0">
        <saml2:Issuer>Test</saml2:Issuer>
        <saml2:Subject>
            <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">testUser</saml2:NameID>
            <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                <saml2:SubjectConfirmationData NotOnOrAfter="2018-08-30T11:52:38.183Z" Recipient="https://test/sp/ACS.saml2"/>
            </saml2:SubjectConfirmation>
        </saml2:Subject>
        <saml2:Conditions NotBefore="2018-08-30T11:50:38.183Z" NotOnOrAfter="2018-08-30T11:52:38.183Z">
            <saml2:AudienceRestriction>
                <saml2:Audience>TestAudience</saml2:Audience>
            </saml2:AudienceRestriction>
        </saml2:Conditions>
        <saml2:AuthnStatement AuthnInstant="2018-08-30T11:50:38.184Z" SessionIndex="_4947dc191f01c1e98d448c2fadd5c289">
            <saml2:AuthnContext>
                <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml2:AuthnContextClassRef>
            </saml2:AuthnContext>
        </saml2:AuthnStatement>
        <saml2:AttributeStatement/>
    </saml2:Assertion>
</saml2p:Response>

我相信这可能是因为

<saml2:AttributeStatement/>

但是在线工具说上面的XML是有效的。

Ping联邦是否需要特定格式的saml响应(即,如果不存在SAML属性,则不需要“saml2:AttributeStatement”),或者这是完全不同的问题?

谢谢

共有1个答案

拓拔麒
2023-03-14

SAML核心规范(https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf)说:

2.7.3元素<代码>

<element name="AttributeStatement" type="saml:AttributeStatementType"/>
<complexType name="AttributeStatementType">
  <complexContent>
    <extension base="saml:StatementAbstractType">
      <choice maxOccurs="unbounded">
        <element ref="saml:Attribute"/>
        <element ref="saml:EncryptedAttribute"/>
      </choice>
    </extension>
  </complexContent>
</complexType>

您使用的在线工具不正确(它们可能只是验证XML,而不是根据SAML模式进行验证):您必须包含

FWIW:如果你不打算发送任何属性,你可以把属性声明全部省略,只是发送一个空属性违反了规范。

 类似资料:
  • 我正在尝试根据XML模式验证XML文档。 这是我的架构: 这是我的XML文档: 现在,当我验证文档(通过Eclipse)时,我得到以下消息: 无效。错误-第18,21行:org.xml.sax.SAXParseException;行号:18;列号:21;CVC-complex-type2.4.a:发现以元素“puiss”开头的内容无效。应为“{Puissance}”之一. 错误-第69,9行:or

  • 我有一个asp。net MVC应用程序我想进行单点登录windows身份验证。我使用Ping Federate作为IdP和SP。当我进入站点时,它将重定向到SSO页面。在我输入凭据后,它将SAML发布到SP,SP将重定向到站点。 问题我的应用程序无法识别用户已通过身份验证并重定向回已对用户进行身份验证的SSO页面,再次将SAML发布到SP,并且存在无限循环。我错过了什么?我需要更改web.conf

  • 我试图用XSD模式验证一些XML文件,但得到错误cvc复杂类型。2.4。d: 发现以元素“Number”开头的内容无效。此时不需要任何子元素。,行“31”,列“11”。 这涉及从类继承的字段和。 我已经尝试在

  • 我试图遵循以下规范来验证SAML响应的签名:https://www.w3.org/tr/xmldsig-core/#sec-pkcs1 下面是我的工作流程:我得到SAML响应。我去掉签名信封,我把它规范化,我检查摘要,然后我检查签名。我能够成功地计算转换的SAML响应的SHA1摘要,并对其进行验证。然而,RSA-SHA1签名检查仍然无法实现。 SAML响应包含签名方法算法:http://www.w

  • 这条信息是什么意思?我搜索了一下,但什么也没找到。什么可能导致这一切?

  • 我以前见过类似的话题,但没有解决方案。 完整的堆栈跟踪是这样的... 严重的7/27/16下午6:14:liquiBase:CVC-complex-type.2.3:元素“create table”不能有字符[子],因为该类型的内容类型是只包含元素的。LiquiBase.exception.ChangeLogParseException:解析MSSQL-ConfluenceTest-ChangeL