ADFS 2.0 中的 SAML 2 签名错误

Posted

技术标签:

【中文标题】ADFS 2.0 中的 SAML 2 签名错误【英文标题】:SAML 2 Signature error in ADFS 2.0 【发布时间】:2013-05-03 10:38:48 【问题描述】:

在我们的 SSO 场景中,我们使用 ADFS 2.0 作为 IDP,使用 Shibboleth 作为 SP。它是由 SP 发起的登录。配置后,当我尝试在 Shibboleth 和 ADFS 2.0(抛出浏览器重定向)之间建立通信时,ADFS 2.0 抛出以下错误。

SAML 消息签名验证失败。 消息发布者:http://sampleserver/adfs/services/trust 异常详情: MSIS1015:服务器需要签名的 SAML AuthenticationRequest,但没有签名。

事件 ID - 320 相关事件 ID - 364

> Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolSignatureVerificationException:
> MSIS1015: Server required signed SAML AuthenticationRequest but no
> signature present.    at
> Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolService.ValidateSignatureRequirements(SamlMessage
> samlMessage)    at
> Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolService.Issue(IssueRequest
> issueRequest)    at
> Microsoft.IdentityServer.Service.SamlProtocol.SamlProtocolService.ProcessRequest(Message
> requestMessage)

我们还没有使用任何签名。我还在 ADFS 属性中将 SignedSamlRequest 设为 false。 Shibboleth 的 SAML 签名也被禁用。

我在 Microsoft 网站上找不到任何信息 - 除了此类错误的通用指南。

请就此错误提出建议。

【问题讨论】:

【参考方案1】:

经过大量分析,我能够找到解决方案。这是一个 Shibboleth 配置问题。在应用程序默认值部分,实体 ID 对于应用程序应该是唯一的。

ApplicationDefaults signing="false" entityID="http://URL of the protected Application " REMOTE_USER="eppn persistent-id 目标 ID"

当 siging 设置为 true 时,会发生此错误的另一种变体。这将导致 ADFS 中的签名不匹配错误。

【讨论】:

以上是关于ADFS 2.0 中的 SAML 2 签名错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥 spring-saml-extension 和 adfs 2.0 返回 403 错误?

使用 SAML 2.0 的自签名证书

ADFS 2.0 - SAML 集成:获取异常

利用XML签名攻击绕过SAML 2.0 SSO

ADFS 拒绝 spring-saml 元数据

ADFS spring-saml 依赖方没有配置 AssertionConsumerService