SAML SP抱怨"无效的数字签名"

时间:2015-01-18 21:43:51

标签: saml saml-2.0 webex

我们正在尝试与Cisco WebEx建立自定义SAML集成。然而,WebEx SP一直在抱怨"无效的数字签名" SAML响应发送到WebEx后。

我们已经检查了SAML响应,签名证书和SAML事务的Fiddler跟踪。没什么好看的。我们已经为其他几项服务做了这个,并没有遇到任何问题。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

最终你应该自己测试文档。许多SAML库将具有验证签名的机制。你的图书馆看起来有效吗?如果不这样做,您可以使用类似xmlsec1的内容来手动验证您的证书。这可能是您的库用于加密的内容,也可能是管理机构用于验证的内容。

使用XMLSec : 给定名为cert.pem的证书和名为doc.xml的SAML响应XML文档,您将对其进行验证:

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

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

答案 1 :(得分:1)

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