如何在SAML响应上调试无效签名

问题描述 投票:1回答:2

我们使用ruby-saml建立我们的应用程序作为服务提供商,同时使用谷歌作为身份提供商,但我不认为这个问题是特定于Ruby或该项目。

我见过this answer from the point of view of an IdP,但我希望从SP的角度来看一个,因为我很难相信谷歌在回复上的签名是错误的。

最重要的是,我们已经成功地与其他Google帐户集成,并且它们在这个帐户被破坏的同时工作。

作为服务提供商,我们如何从身份提供商处找出SAML响应无效签名的来源?

saml
2个回答
1
投票

我最后在问题中引用的答案中使用了suggestion to use XMLSec,并在Google的元数据文件中运行了已解码的base 64响应和证书。

这让我相信Google提供的IdP元数据XML文件中的证书确实存在问题。

然后我注意到我的工作帐户只有1个证书在文件中,而这个有两个。所以我删除了一个,但它没有用。然后我更换了它并移除了另一个,它起作用了。

然后我发现我可以将两个证书放在文件中,只要工作证书是第一个。

我不确定为什么会有差异,我不知道为什么Google会按照XMLSec无法用来验证签名的顺序输出证书。

也许比我自己知识更多的人可以参与其中,但就目前而言,我很高兴地报告说,简单地颠倒证书在Google的IdP元数据文件中出现的顺序允许验证签名。


1
投票

我也需要包含此设置。 YMMV,似乎默认算法是sha1,但我使用openssl实用程序计算的密钥和输出是使用sha256:

settings.idp_cert_fingerprint_algorithm = "http://www.w3.org/2000/09/xmldsig#sha256"
© www.soinside.com 2019 - 2024. All rights reserved.