0

我们正在尝试设置与 Cisco WebEx 的自定义 SAML 集成。但是,在将 SAML 响应发送到 WebEx 后,WebEx SP 不断抱怨“无效的数字签名”。

我们已经检查了 SAML 响应、签名证书和 SAML 事务的 Fiddler 跟踪。似乎没有什么不寻常的。我们已经为其他几项服务做到了这一点,并且没有遇到任何问题。

是否有一个好的工具可以帮助我们调试 WebEx 认为数字签名无效的原因?

4

2 回答 2

4

数字签名可能被视为无效的原因有几个。

更改的文件:确保您签署的文件在签署后没有以任何方式更改。即使添加空白字符也会使签名无效。

字符编码:如果您的文档包含 unicode 字符,请确保您指定了正确的编码。大多数 SAML 文档都应该以 UTF8 编码,如下所示:<?xml version="1.0" encoding="utf-8"?>

错误元素签名:包含断言的 SAML 文档通常期望在断言本身上具有签名,而不一定在整个文档上。

不正确的证书:确保您授予权限的证书与您正在签名的密钥匹配。有些实现会让您在文档中包含证书,而其他实现可能会要求您预定义证书。如果您文件中的签名与他们存档的不匹配,则签名将被视为无效。您是否使用 SSL 证书进行签名?你最近更新了吗?

最终,您应该自己测试文档。许多 SAML 库将具有验证签名的机制。你的对你的图书馆有效吗?如果做不到这一点,您可以使用类似xmlsec1的方法手动验证您的文档和您的证书。这可能是您的图书馆用来加密的内容,也可能是权威机构用来验证的内容。

使用 XMLSec:给定一个名为的证书cert.pem和一个名为 SAML 响应 XML 文档,doc.xml您将像这样验证它:

$ xmlsec1 --verify --pubkey-cert-pem cert.pem --id-attr:ID Response doc.xml
OK
SignedInfo References (ok/all): 1/1

您可能需要更改该--id-attr值以匹配文档的 ID 属性。您正在寻找与上述类似的输出,以通知您文档的签名对提供的证书有效。

于 2015-01-18T23:33:56.877 回答
1

检查您是否签署了 Assertion 元素,而不是顶级 Response 元素。

于 2015-01-18T23:43:45.573 回答