“wsse:InvalidSecurity”是什么意思?

时间:2009-01-07 08:25:37

标签: web-services security wss pki

An error was discovered processing the <wsse:Security> header

这是一个WS-Security问题btw ...

我看不到我的WS端点有什么问题(除了它在TIBCO BW引擎中运行的事实!)。有人有这种错误的“先验”吗?我意识到可以在任何地方破解WS-Security Header以获得此错误,但是GOT在某种常见错误上是90%。

这是安全的SOAP - 客户端是独立的java(WSS4J 1.5.0),仅在此阶段执行签名。

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
            <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-20237898">
                <ds:SignedInfo>
                    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <ds:Reference URI="#id-18414151">
                        <ds:Transforms>
                            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                        </ds:Transforms>
                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                        <ds:DigestValue>DvjhvAtEVxwntL/RjMCNhId57cg=</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>
YbOB3FRduCr5rutpIvch9sDZfZToy3pjm+Kyl/Oqz6cAPqMVKqvKBb4P7ebnzP/3SVjm+PfLqlE5
BGgcT3Vz93apyg+eY1rAIYUs7K1Zt9F5ejMmij6HQpQTGpyM9BUXJi1x5bt9GuMtD0SK939bIIE2
ZUyZ0jPJp/wUhMonskw=
</ds:SignatureValue>
                <ds:KeyInfo Id="KeyId-15734641">
                    <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-3852606">
                        <ds:X509Data>
                            <ds:X509IssuerSerial>
                                <ds:X509IssuerName>CN=Mark Hesketh,OU=asdf,O=DVA,L=Canberra,ST=ACT,C=AU</ds:X509IssuerName>
                                <ds:X509SerialNumber>1231310305</ds:X509SerialNumber>
                            </ds:X509IssuerSerial>
                        </ds:X509Data>
                    </wsse:SecurityTokenReference>
                </ds:KeyInfo>
            </ds:Signature>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-18414151">
        <message xmlns="http://www.tibco.com/schemas/CertificateWork/Resources/Schema.xsd" text="Sample msg with SHA1 signature"/>
    </soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:1)

哇...如果你还有这个问题,你会比我更耐心......但为了以防万一,这是我的想法:

  • http://schemas.xmlsoap.org/specs/ws-security/ws-security.htm#ws-security__toc6201567 - 建议在阅读标签时遇到问题。
  • 对我而言,有一件事是我没有看到将签名与密钥信息相关联的引用。当然,我会假设KeyInfo元素描述了使用私钥来创建SignatureValue的证书,但是我没有看到告诉软件的XML。我不认为包括KeyInfo就足够了,可能必须有一个链接。
  • 如果不是这样,我会对模式进行双重检查,并且可能是一个独立的模式验证源。标题级别的错误使我想到格式而不是内容。

这是我对这一次的第一次猜测,这只是一个猜测而不是亲自动手系统并尝试一堆不同的东西。如果这不起作用,这是我对此类错误的一般逻辑链:

  1. 格式 - 根据架构更正XML?
  2. 签名 - 签名需要三件事:数据,密钥,制作它的一组算法。检查所有三个 - 数据是否正确,密钥是否正确,算法是否适合密钥以及如何处理消息?此外,您的图书馆是否正确引用了密钥和数据项?
  3. 外部信息来源 - 在这种情况下,您的密钥信息会引用可能从其他位置提取的证书 - 例如LDAP证书存储区。那么..你的代码可以到达那个外部源,是运行数据的源,可以从运行代码的地方访问网络吗?等
  4. 如果PKI - 证书验证/信任 - 系统必须在幕后做什么才能信任签名者? OCSP检查?在LDAP中查找?链到受信任的根?信任算法是否正常工作并且具有所需的一切 - 即访问OCSP响应器,正确配置的证书存储等等。
  5. 我根据我对错误含义的猜测重新排序这些步骤。错误不是那么直观 - 所以我经常会经历所有这些步骤,以防我对错误的解释是错误的。此外,我可能会在以后预防问题......