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

これはWS-Securityの質問です...

WS エンドポイントに問題はありません (TIBCO BW エンジンで実行されていることを除けば!)。誰かがこの種のエラーの「事前」を持っていますか? おそらくこのエラーが発生するために WS-Security ヘッダーがどこかで壊れている可能性があることは理解していますが、何らかの一般的なエラーでは 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>
4

2 に答える 2

3

うわー...あなたがまだこの問題を抱えているなら、あなたは私よりも忍耐力があります...しかし念のために、ここに私の考えがあります:

  • http://schemas.xmlsoap.org/specs/ws-security/ws-security.htm#ws-security__toc6201567-これはタグの読み取りに問題があることを示しています。
  • 私が目立つのは、署名をキー情報に接続する参照が表示されないことです。確かに、KeyInfo要素は秘密鍵を使用してSignatureValueを作成した証明書を記述していると思いますが、ソフトウェアにそのことを伝えているXMLの一部は表示されません。KeyInfoを含めるだけでは不十分だと思います。それへのリンクが必要な場合があります。
  • そうでない場合は、これをスキーマ、およびおそらく独立したスキーマ検証ソースに対して再確認します。ヘッダーレベルのエラーにより、コンテンツではなくフォーマットを考えるようになります。

これが私の最初の推測であり、システムを実際に操作したり、さまざまなことを試したりすることなく、推測にすぎません。それが機能しない場合、これはこのタイプのエラーの私の一般的な論理チェーンです。

  1. フォーマット-スキーマに従ってXMLは正しいですか?
  2. 署名-署名には、データ、キー、署名を作成するための一連のアルゴリズムの3つが必要です。3つすべてをチェックしてください-データは正しいですか、キーは正しいですか、アルゴリズムはキーとメッセージの処理方法に適していますか?また、キーとデータ項目は適切に参照されており、ライブラリによって検出されていますか?
  3. 外部情報源(この場合、キー情報は、LDAP証明書ストアなど、おそらく他の場所から取得された証明書を参照します)。それで..あなたのコードはその外部ソースに到達できますか、データのソースは実行されており、コードを実行している場所からネットワークにアクセスできますか?等
  4. If PKI -- Certificate Validation/Trust - what does the system have to do behind the scenes to trust the signer? OCSP checks? Lookup in LDAP? Chain to trusted root? etc. Is the trust algorithm working properly and does it have everything it needs - ie, access to OCSP responder, properly configured certificate store, etc.

I reorder these steps based upon my guess on what the error means. The errors are not so intuitive -- so I often go through all these steps just in case my interpretation of the error is wrong. Besides, I may then prevent a problem later...

于 2009-10-12T14:05:25.280 に答える