我有一台Windows Server 2012计算机,它安装了Active Directory联合身份验证服务,以允许它充当身份提供程序。我有一个Shibboleth服务提供商,它使用我的IDP进行身份验证,但是工件解析绑定似乎没有工作。
我可以确认我的ADFS配置数据库已设置为使用SQL Server并且启用了工件解析端点。我查看了artifactstore数据库,似乎生成并存储了SAML响应。我通过SAML验证器运行它,这是一个有效的响应。 Shibboleth方返回的错误消息是:
身份提供程序在工件解析期间返回了SAML错误。
身份提供者出错:
状态:urn:oasis:names:tc:SAML:2.0:status:Requester 检查ADFS事件日志时,报告的错误是:
工件解析请求失败。
其他数据 异常消息: MSIS0018:无法读取SAML协议消息,因为它包含无效的数据。
我启用了ADFS跟踪,这也是唯一返回的消息。有人可以帮忙吗?
更新 - 我在使用Firefox时运行了SAML Tracer,从SP发送到IDP的请求如下(我已删除了细节):
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL="https://xxx.xxx.com/Shibboleth.sso/SAML2/Artifact"
Destination="https://ccc.ccc.co.uk/adfs/ls/"
ID="_1xxxxxxxxxxxxxxx"
IssueInstant="2015-02-19T10:10:53Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
Version="2.0"
>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://xxx.xxx.com/shibboleth</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="1" />
</samlp:AuthnRequest>
没有通过浏览器发送的响应,但ADFS正在生成SAML响应并将其存储在adfs工件数据库中。响应如下(删除了细节):
<samlp:Response ID="_1xxxxxxxxxxx" Version="2.0" IssueInstant="2015-02-19T10:11:05.391Z"
Destination="https://xxx.xxx.com/Shibboleth.sso/SAML2/Artifact" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
InResponseTo="_1xxxxxxxxxxxxxxx" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://ccc.ccc.co.uk/adfs/services/trust</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<Assertion ID="_dxxxxxxxxxxx" IssueInstant="2015-02-19T10:11:05.282Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>http://ccc.ccc.co.uk/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="#_dxxxxxxxxxxx">
<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>xxxxxxxxxx=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>xxxxxxxxxxxxx</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>xxxxxxxxxxxxxxxxxx==</ds:X509Certificate>
</ds:X509Data>
</KeyInfo>
</ds:Signature>
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
NameQualifier="http://ccc.ccc.co.uk/adfs/services/trust"
SPNameQualifier="http://xxx.xxx.com/shibboleth">
xxxxxxxxxxxx=
</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="_1xxxxxxxxxxx" NotOnOrAfter="2015-02-19T10:16:05.407Z"
Recipient="https://sp.cobweb.secure-dimensions.de/Shibboleth.sso/SAML2/Artifact" />
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="2015-02-19T10:11:05.188Z" NotOnOrAfter="2015-02-19T18:11:05.188Z">
<AudienceRestriction>
<Audience>
https://xxx.xxx.com/shibboleth
</Audience>
</AudienceRestriction>
</Conditions>
<AuthnStatement AuthnInstant="2015-02-19T10:11:03.766Z" SessionIndex="_dxxxxxxxxxx">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>
我将响应作为一个基本的响应,只有NameID,目前没有属性,因为我得到相同的错误消息,无论它们是否存在。 谢谢,
弗兰
答案 0 :(得分:0)
使用Firefox并添加&#34; SAML Tracer&#34;插件。
然后查看SAML消息并查看是否有任何明显的消息。
或者在这里张贴(先混淆任何识别的东西)。