SAML 2.0
我正在努力帮助客户解决这个问题。我无法访问他们的ADFS服务器。我是他们尝试连接的服务提供商。
国内流离失所者发起的SSO工作正常。客户端从下拉列表中选择我们的服务,用户可以无缝登录。SP启动但失败了。他们点击我们的服务器,我们发送auth请求,用户通过ADFS,ADFS POST到我们的ACS URL,然后失败,因为断言不包含所有必需的元素。条件,受众,NameIDPolicy等不存在,但Cert和Signature是。
我已经搜索了这个废话,找不到与我的客户分享的任何内容。我不是100%肯定他们对ADFS的经验,以及他们是否一直在检查事件日志中的错误。想法?
以下是删除了私人信息的断言:
<samlp:Response ID="_2ffc76ad-1691-43-9b3a-0193d8348" Version="2.0" IssueInstant="2014-12-16T20:29:20.070Z" Destination="https://xxxx.com/samldefault.aspx" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" InResponseTo="_290a5f3-4c68-b101-589a07a02a7c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" >
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://xxxxxxxx/adfs/services/trust</Issuer >
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" >
<ds:SignedInfo >
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" / >
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" / >
<ds:Reference URI="#_2ffc76ad-1691-43f5-9b3a-01936ddd8348" >
<ds:Transforms >
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" / >
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" / >
</ds:Transforms >
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" / >
<ds:DigestValue>DPLGDmOWmjpoSdETBsPE=</ds:DigestValue >
</ds:Reference >
</ds:SignedInfo >
<ds:SignatureValue>xxxxxxxx</ds:SignatureValue >
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" >
<ds:X509Data >
<ds:X509Certificate>xxxxxxxxx</ds:X509Certificate >
</ds:X509Data >
</KeyInfo >
</ds:Signature >
<samlp:Status >
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder" / >
</samlp:Status >
</samlp:Response>
答案 0 :(得分:2)
想出来了。客户端查看了他们的服务器日志并找到了:
Log Name: AD FS/Admin
Source: AD FS
Date: 12/17/2014 3:53:30 PM
Event ID: 303
Task Category: None
Level: Error
Keywords: AD FS
User: AD\adfssvc
Computer: ADFS01.ad.he-equipment.com
Description:
The Federation Service encountered an error while processing the SAML authentication request.
Additional Data
Exception details:
Microsoft.IdentityModel.Protocols.XmlSignature.SignatureVerificationFailedException: ID4037: The key needed to verify the signature could not be resolved from the following security key identifier 'SecurityKeyIdentifier
无论是从他们的配置,还是在ADFS中默认,他们都需要导入我们的公共证书。由于需要证书,ADFS会通过不完整的SAML断言将用户传递给服务提供商,这似乎是不合逻辑的。但是,它现在有效。