我使用的是ADFS 3.0和SAML 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方面提出的问题?
感谢。
答案 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等验证程序检查您的请求是否合规。其他人可能会有更多的建议。