2017-04-21 207 views
0

我使用ADFS 3.0和SAML 2.我有像错误:微软AD FS 3.0和SAML 2个错误的例外: '元素' 是无效XmlNodeType

  1. 例外: '元素' 是无效的XmlNodeType。堆栈跟踪:在 System.Xml.XmlReader.ReadEndElement()在Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerial1)izer.ReadAuthnRequest(XmlReader中 读者)
  2. 被动管道错误

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

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

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

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

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

请参阅样本https://msdn.microsoft.com/en-us/library/ee895365.aspx以了解如何使用forceauthn。我也是固定的目的地AD FS端点/ ADFS/LS不http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf /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> 

Review规格正确authnrequest。

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

+0

非常感谢@ maweeras的回应给予了正确的方向和吨的良好参考。事实证明,'samlp:forceAuthn'是一个属性,而不是一个元素。奇怪的是,这个无效元素确实与公司现有的客户合作。无论如何,我将所有4模式下载到我的位置机器上,以验证xml:saml-schema-assertion-2.0.xsd,saml-schema-protocol-2.0.xsd,xenc-schema.xsd,xmldsig-core-schema.xsd和自定义它们的xsd引用以指向本地副本。 –

+0

如果有效,接受答案是首选 – maweeras