4

WebLogic 10.3.6 ライブラリを使用して、スタンドアロンの JAX-WS クライアントから Metro で保護された Web サービスを呼び出そうとしています。WS は双方向の X.509 ポリシーで保護されています。

WS は、SOAP リクエストが暗号化され、サーバーの公開鍵で署名されていることを期待しています。しかし、WebLogic マニュアルの例を試してみたところ、JAX-WS クライアントはクライアントの秘密鍵で SOAP リクエストに署名し、サーバーの公開鍵でそれらを暗号化することがわかりました。

  • 必要: 暗号化と署名 -> サーバーの公開鍵
  • 現在: 暗号化 -> サーバー公開鍵。署名 -> クライアントの秘密鍵

SOAP 要求の必要な署名と暗号化を行うようにスタンドアロン クライアントを構成するにはどうすればよいですか?

クライアント コードとポリシーを以下に貼り付けます。ありがとう、バス

クライアントコード:

public class Main {
  public static void main(String[] args) {

    // Prepare request
    MyServiceService test = new MyServiceService();
    MyService port = test.getMyServicePort();

    // String constants to for server certificate, and client identity store
    String serverCertFile = "D:\\Development\\ws-config\\client_trust.der";
    String clientKeyStore = "D:\\Development\\ws-config\\client_store.jks";
    String clientKeyStorePass = "Leia";
    String clientKeyAlias = "trust";
    String clientKeyPass = "Leia";

    // Create list of credential providers
    List<CredentialProvider> credProviders = new ArrayList<CredentialProvider>();

    X509Certificate serverCertInit = null;
    CredentialProvider cp = null;
    try {
      // Create a credential provider with the client indentity and the server certificate
      serverCertInit = (X509Certificate) CertUtils.getCertificate(serverCertFile);
      serverCertInit.checkValidity();

      cp = new ClientBSTCredentialProvider(clientKeyStore, clientKeyStorePass, clientKeyAlias, clientKeyPass, "JKS", serverCertInit);
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }

    credProviders.add(cp);

    // Finally add the credential providers to the request context
    Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
    requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);

    List certificate = CertUtils.getCertificate(clientKeyStore, clientKeyStorePass, clientKeyAlias, "JKS");

    final X509Certificate clientCert = (X509Certificate) certificate.get(0);
    final X509Certificate serverCert = serverCertInit;

    // Setup the TrustManager to verify the signature on the returned message
    requestContext.put(WSSecurityContext.TRUST_MANAGER, new TrustManager() {
      public boolean certificateCallback(X509Certificate[] chain, int validateErr) {
        // Check the server and client cert
        boolean validServer = chain[0].equals(serverCert);
        System.out.println("Server cert valid: " + validServer);
        boolean validClient = chain[0].equals(clientCert);
        System.out.println("Client cert valid: " + validClient);

        return validClient ^ validServer;
      }
    });

    // Invoke the service
    // port. ...
  }
}

WSDL ポリシー:

<wsp:Policy wsu:Id="MyPortBindingPolicy">
    <wsp:ExactlyOne>
        <wsp:All>
            <wsam:Addressing wsp:Optional="false" />
            <sp:SymmetricBinding>
                <wsp:Policy>
                    <sp:ProtectionToken>
                        <wsp:Policy>
                            <sp:SecureConversationToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                                <wsp:Policy>
                                    <sp:RequireDerivedKeys />
                                    <sp:BootstrapPolicy>
                                        <wsp:Policy>
                                            <sp:AsymmetricBinding>
                                                <wsp:Policy>
                                                    <sp:InitiatorToken>
                                                        <wsp:Policy>
                                                            <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                                                                <wsp:Policy>
                                                                    <sp:WssX509V3Token10 />
                                                                    <sp:RequireIssuerSerialReference />
                                                                    <sp:RequireDerivedKeys />
                                                                </wsp:Policy>
                                                            </sp:X509Token>
                                                        </wsp:Policy>
                                                    </sp:InitiatorToken>
                                                    <sp:RecipientToken>
                                                        <wsp:Policy>
                                                            <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">
                                                                <wsp:Policy>
                                                                    <sp:WssX509V3Token10 />
                                                                    <sp:RequireIssuerSerialReference />
                                                                    <sp:RequireDerivedKeys />
                                                                </wsp:Policy>
                                                            </sp:X509Token>
                                                        </wsp:Policy>
                                                    </sp:RecipientToken>
                                                    <sp:Layout>
                                                        <wsp:Policy>
                                                            <sp:Strict />
                                                        </wsp:Policy>
                                                    </sp:Layout>
                                                    <sp:IncludeTimestamp />
                                                    <sp:OnlySignEntireHeadersAndBody />
                                                    <sp:AlgorithmSuite>
                                                        <wsp:Policy>
                                                            <sp:Basic256 />
                                                        </wsp:Policy>
                                                    </sp:AlgorithmSuite>
                                                </wsp:Policy>
                                            </sp:AsymmetricBinding>
                                            <sp:Wss10>
                                                <wsp:Policy>
                                                    <sp:MustSupportRefIssuerSerial />
                                                </wsp:Policy>
                                            </sp:Wss10>
                                            <sp:EncryptedParts>
                                                <sp:Body />
                                            </sp:EncryptedParts>
                                            <sp:SignedParts>
                                                <sp:Body />
                                                <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
                                                <sp:Header Name="AckRequested" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                                                <sp:Header Name="SequenceAcknowledgement" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                                                <sp:Header Name="Sequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                                                <sp:Header Name="CreateSequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                                            </sp:SignedParts>
                                        </wsp:Policy>
                                    </sp:BootstrapPolicy>
                                </wsp:Policy>
                            </sp:SecureConversationToken>
                        </wsp:Policy>
                    </sp:ProtectionToken>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict />
                        </wsp:Policy>
                    </sp:Layout>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256 />
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:IncludeTimestamp />
                    <sp:OnlySignEntireHeadersAndBody />
                </wsp:Policy>
            </sp:SymmetricBinding>
            <sp:Wss11>
                <wsp:Policy>
                    <sp:MustSupportRefIssuerSerial />
                    <sp:MustSupportRefThumbprint />
                    <sp:MustSupportRefEncryptedKey />
                </wsp:Policy>
            </sp:Wss11>
            <sp:Trust13>
                <wsp:Policy>
                    <sp:RequireClientEntropy />
                    <sp:RequireServerEntropy />
                    <sp:MustSupportIssuedTokens />
                </wsp:Policy>
            </sp:Trust13>
            <tcp:OptimizedTCPTransport enabled="true" />
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
<wsp:Policy wsu:Id="SecureInputMessagePolicy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:EncryptedParts>
                <sp:Body />
            </sp:EncryptedParts>
            <sp:SignedParts>
                <sp:Body />
                <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="AckRequested" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="SequenceAcknowledgement" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="Sequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="CreateSequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
            </sp:SignedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
<wsp:Policy wsu:Id="SecureOutputMessagePolicy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:EncryptedParts>
                <sp:Body />
            </sp:EncryptedParts>
            <sp:SignedParts>
                <sp:Body />
                <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="AckRequested" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="SequenceAcknowledgement" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="Sequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
                <sp:Header Name="CreateSequence" Namespace="http://docs.oasis-open.org/ws-rx/wsrmp/200702" />
            </sp:SignedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
4

0 に答える 0