2

まず第一に、私は Web サービスに関して一種の初心者であると言わざるを得ません。そのため、私は助けを求めています。WS-Security を使用してパートナー Web サービス (Java でコーディング) に接続する必要があります。彼らは私に SoapUI からの有効な SOAP リクエストをくれました (以下を参照)。「発行者名」と「シリアル番号」で各リクエストに署名するための証明書を生成するように言われました。

<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <ds:Signature Id="Signature-272" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <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-257">
                <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>36iYibFfBPkl3txny4y0c+ekpII=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>
        [SIGNATURE_HERE]
        </ds:SignatureValue>
        <ds:KeyInfo Id="KeyId-47898F24E5D247647A1354811737556419">
            <wsse:SecurityTokenReference wsu:Id="STRId-47898F24E5D247647A1354811737556420" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><ds:X509Data>
                <ds:X509IssuerSerial>
                    <ds:X509IssuerName>[ISSUER_NAME_HERE]</ds:X509IssuerName>
                    <ds:X509SerialNumber>[SERIAL_NUMBER_HERE]</ds:X509SerialNumber>
                </ds:X509IssuerSerial>
                </ds:X509Data>
            </wsse:SecurityTokenReference>
        </ds:KeyInfo>
    </ds:Signature>
</wsse:Security>

この Java サービスを使用するための証明書とクライアント WCF は既に作成しています。WCF が適切なバインドで WS-Security を使用していることは知っていますが、カスタム バインドを設定して同様の SOAP 要求を送信する方法がまったくわかりません。

誰でもこれについて私を助けることができますか?

次のようにSOAPリクエストに署名することができました:

<s:Header>
        <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo8UTBBd8ndRApttX6H4RJEMBAAAAvgx/52oS4EulUaoW1htOkwnWJIGb+3hDh/wIKsKPzp8ACQAA</VsDebuggerCausalityData>
        <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <o:BinarySecurityToken u:Id="uuid-02a3636d-6fcd-446c-9ded-5a9a8373e12c-2" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">
                [TOKEN_HERE]
            </o:BinarySecurityToken>
            <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                <SignedInfo>
                    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <Reference URI="#_1">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                            <DigestValue>G6+dynIq7UBMD0R2ft0CcKfW0vA=</DigestValue>
                    </Reference>
                </SignedInfo>
                <SignatureValue>
                    [SIGNATURE_HERE]
                </SignatureValue>
                <KeyInfo>
                    <o:SecurityTokenReference>
                        <o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-02a3636d-6fcd-446c-9ded-5a9a8373e12c-2"/>
                    </o:SecurityTokenReference>
                </KeyInfo>
            </Signature>
        </o:Security>
    </s:Header>

しかし、SecurityTokenReference タグが一致しません。IssuerName および SerialNumber パラメータをリクエストに追加する方法を知っていますか?

4

0 に答える 0