如何验证新的 SAML 证书

How to validate new SAML certificate

我正在开发一个充当 SAML 服务提供商的应用程序。它是用 Rails 编写的,并使用 omniauth-saml 和 ruby-saml gem。

我们的证书即将到期,我们需要创建一个新证书。我的任务是验证新的是否正常工作。但是,我测试过的 IdP 中 none 似乎关心我使用的是哪个证书。当我使用旧证书设置它们然后将我们的应用程序切换为使用新证书时,它们都允许 SP 启动的登录,就好像什么都没有改变一样。

该应用程序需要与所有 IdP 一起工作,我认为其中一些可以验证断言签名。当签名与设置的签名不匹配时,我需要找到一个无法接受 SP 发起的登录断言的 IdP。我试过 Okta、Jumpcloud 和 Ping,但都没有成功。

一个问题是:为什么这些 IdP 不关心 SP 发起的登录的签名。但主要问题是:如何找到一个真正关心的以便我可以测试新证书?

谢谢!

有两个地方使用了您的 SP 的证书:(1) SP 可以对其向 IdP 的身份验证请求进行数字签名,以及 (2) IdP 可以使用您的 SP 的 public 钥匙。

对于情况 (1),如果您的 SP 使用新证书签署其请求,但 IdP 像以前一样响应,很可能是 IdP 只是忽略了签名。 IdP 可能必须配置为期望并要求签名请求,然后才会在未知证书上失败。但请注意,是否验证已签名的请求取决于 IdP;例如,根据 this post Okta 不验证已签名身份验证请求的签名。

对于情况 (2),使用 Firefox 的 SAML 跟踪器或类似工具来验证来自 IdP 的部分响应是否已加密。如果不是,那就可以解释为什么切换到 IdP 不知道的新证书会继续工作。

也可能您的 SP 只需要知道此人通过 IdP 的身份验证成功,不需要其他信息,在这种情况下,您的 SP 的证书是多余的。

特别是,Shibboleth IdP 可以配置为发回加密断言。

对我来说,到目前为止最容易使用和配置的 IdP 或 SP 测试连接器可以在这里找到:https://support.onelogin.com/hc/en-us/articles/202673944-How-to-Use-the-OneLogin-SAML-Test-Connector

有一个测试连接器列表可以帮助您测试不同类型的连接。