Microsoft AD FS 3.0和SAML 2错误为异常:“元素”是无效的XmlNodeType

时间:2017-04-21 13:29:45

标签: saml adfs adfs3.0

我使用的是ADFS 3.0和SAML 2.我收到的错误如下:

  1. 例外: 'Element'是无效的XmlNodeType。 StackTrace:at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerial1)中的System.Xml.XmlReader.ReadEndElement()izer.ReadAuthnRequest(XmlReader) 读取器)
  2. 被动管道错误
  3. saml请求是:

    <samlp:AuthnRequest xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="DH7a49776ef7c040d09b2c661821bd5f76" AssertionConsumerServiceURL="https://auth-dev.ServiceProvider.com/clientOrg/SAML/Login" Destination="https://federation.example.net/adfs/ls/IdpInitiatedSignOn.aspx" IssueInstant="2017-04-20T14:49:35.6414575Z" Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer>https://auth.ServiceProvider.com/clientOrg</saml:Issuer>
    <samlp:NameIDPolicy AllowCreate="true" />
    <samlp:forceAuthn>true</samlp:forceAuthn>
    </samlp:AuthnRequest>
    

    如果错误信息过于模糊,如何进一步缩小范围并解决从AD FS方面提出的问题?

    感谢。

1 个答案:

答案 0 :(得分:1)

确保您的请求符合规范。使用成熟的SAML2库来生成请求,而不是手工制作它。

https://auth.ServiceProvider.com/clientOrg用于生成这些请求的内容是什么?

如果您删除以下字符串,则您的请求会变得合规。

<samlp:forceAuthn>true</samlp:forceAuthn>

请参阅https://msdn.microsoft.com/en-us/library/ee895365.aspx处的示例,了解如何使用forceauthn。我也固定目的地,因为广告fs端点是/ adfs / ls而不是/adfs/ls/idpinitiatedsignon.aspx

<samlp:AuthnRequest xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ForceAuthn="true" ID="DH7a49776ef7c040d09b2c661821bd5f76" AssertionConsumerServiceURL="https://auth-dev.ServiceProvider.com/clientOrg/SAML/Login" Destination="https://federation.example.net/adfs/ls/" IssueInstant="2017-04-20T14:49:35.6414575Z" Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <saml:Issuer>https://auth.ServiceProvider.com/clientOrg</saml:Issuer>
  <samlp:NameIDPolicy AllowCreate="true" />
</samlp:AuthnRequest>

http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf处查看规范,了解正确的authnrequest。

使用https://www.samltool.com/validate_xml.php等验证程序检查您的请求是否合规。其他人可能会有更多的建议。