MSIS7093:邮件未使用预期的签名算法签名。 (但它是)

MSIS7093: The message is not signed with expected signature algorithm. (But it is)

我有一个信任 SP 的 ADFS。

我添加了 signature verification certificate 对于我的依赖方信任,但出现以下错误:

MSIS7093: MSIS7093: The message is not signed with expected signature algorithm. Message is signed with signature algorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1. Expected signature algorithm http://www.w3.org/2001/04/xmldsig-more#rsa-sha256

看起来很清楚,但与实际上下文不一致:签名验证证书是generated by SHA-256,而不是SHA-1。

如果我按照正确的错误消息并更改安全散列算法 from SHA-256 to SHA-1,它会起作用并且我可以执行 SSO 身份验证。但我对此并不满意,原因有二:

证书是使用 openssl 生成的:

openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout samlkratos.key -out samlkratos.crt

有人知道为什么会这样吗?

证书的散列值与用于存储数据的散列值没有真正的关系。

例如,当 XML 被签名时,规范的 XML 使用多种受支持的哈希算法之一进行哈希处理。 XML 然后用像 http://www.w3.org/2000/09/xmldsig#rsa-sha1 这样的签名算法更新,以告诉服务器这是使用的算法。

在服务器端,IdP 通常有一个设置,其中指定了签名算法。本质上告诉 IdP 它应该使用特定算法验证请求

如果您发送的是 sha1,而错误是它期望的是 sha256,则存在不匹配,SP(应用程序)可能需要更改设置。

您通常可以使用 SAML 解码器插件查看从浏览器发送的内容。

同样,这取决于 SP 应用程序配置为发送的内容以及 IdP 配置为接受的内容(如果适用)并且与证书(rsa-sha256 中的 RSA)关系不大,需要基于 RSA 的证书但是只要支持组合,就可以有很多东西(例如 DSA 证书不能支持 sha512,因为规范不允许)