2017-12-14 18 views
-1

WSO2 ESBの新機能です。 私はwsHttpBindingを自己証明書で保護したwcfサービスを構築しました。私はそのサービスをESBと統合する方法を見つけることができません。 お願いします。WSO2 ESB消費WCF保証付きメソッド

makecertコマンドを使用して自己署名付き証明書を作成しましたが、作成した証明書を使用するようにrampartを設定することはできません。どうやってやるの?私は迷ってしまった。私はどうあるべきか

org.apache.synapse.SynapseException: Unexpected error during sending message out at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:257) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:84) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:548) at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382) at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65) at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:231) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:403) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.axis2.AxisFault: Signature token missing at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:76) at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340) at org.apache.axis2.engine.Phase.invoke(Phase.java:313) at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:426) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:185) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:581) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:78) ... 11 more Caused by: org.apache.rampart.RampartException: Signature token missing at org.apache.rampart.builder.SymmetricBindingBuilder.doSignBeforeEncrypt(SymmetricBindingBuilder.java:434) at org.apache.rampart.builder.SymmetricBindingBuilder.build(SymmetricBindingBuilder.java:86) at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:144) at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65) ... 20 more 

:私は、プロキシサービスを作成した後、私は次のエラーを得た

<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
      <ramp:user>acc1</ramp:user> 
      <ramp:userCertAlias>acc1</ramp:userCertAlias> 
      <ramp:encryptionUser>acc1</ramp:encryptionUser> 
      <ramp:passwordCallbackClass>org.wso2.samples.pwcb.PWCBHandler</ramp:passwordCallbackClass> 
      <ramp:TimeToLive>360</ramp:TimeToLive> 
      <ramp:signatureCrypto> 
       <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">pkcs12</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.file">C:\ESB_HOME\repository\resources\security\cert1.pfx</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">123</ramp:property> 
       </ramp:crypto> 
      </ramp:signatureCrypto> 
      <ramp:encryptionCypto> 
       <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">pkcs12</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.file">C:\ESB_HOME\repository\resources\security\cert1.pfx</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">123</ramp:property> 
       </ramp:crypto> 
      </ramp:encryptionCypto> 
     </ramp:RampartConfig> 

<wsHttpBinding> 
    <binding name="BasicHttpAuthentication_Config">   
     <security mode="Message"> 
     <message clientCredentialType="UserName" algorithmSuite="Basic256" establishSecurityContext="false"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 

と城壁の構成は次のようになります。私のwsHttpBindingはこのようになりますそれを機能させるには? 全体のポリシーファイルには、以下の通りである:私はそれを考え出した

<wsp:Policy wsu:Id="WSHttpBinding_IBasicHttpService_policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"> 
<wsp:ExactlyOne> 
    <wsp:All> 
     <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <wsp:Policy> 
       <sp:ProtectionToken> 
        <wsp:Policy> 
         <mssp:SslContextToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" xmlns:mssp="http://schemas.microsoft.com/ws/2005/07/securitypolicy"> 
          <wsp:Policy> 
           <sp:RequireDerivedKeys/> 
          </wsp:Policy> 
         </mssp:SslContextToken> 
        </wsp:Policy> 
       </sp:ProtectionToken> 
       <sp:AlgorithmSuite> 
        <wsp:Policy> 
         <sp:Basic256/> 
        </wsp:Policy> 
       </sp:AlgorithmSuite> 
       <sp:Layout> 
        <wsp:Policy> 
         <sp:Strict/> 
        </wsp:Policy> 
       </sp:Layout> 
       <sp:IncludeTimestamp/> 
       <sp:EncryptSignature/> 
       <sp:OnlySignEntireHeadersAndBody/> 
      </wsp:Policy> 
     </sp:SymmetricBinding> 
     <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <wsp:Policy> 
       <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
        <wsp:Policy> 
         <sp:WssUsernameToken10/> 
        </wsp:Policy> 
       </sp:UsernameToken> 
      </wsp:Policy> 
     </sp:SignedSupportingTokens> 
     <sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <wsp:Policy/> 
     </sp:Wss11> 
     <sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <wsp:Policy> 
       <sp:MustSupportIssuedTokens/> 
       <sp:RequireClientEntropy/> 
       <sp:RequireServerEntropy/> 
      </wsp:Policy> 
     </sp:Trust10> 
     <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <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:SignedParts> 
     <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
      <sp:Body /> 
     </sp:EncryptedParts> 
     <wsaw:UsingAddressing/> 
     <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
      <ramp:user>acc1</ramp:user> 
      <ramp:userCertAlias>BasicHttpAuthentication</ramp:userCertAlias> 
      <ramp:encryptionUser>acc1</ramp:encryptionUser> 
      <ramp:passwordCallbackClass>org.wso2.samples.pwcb.PWCBHandler</ramp:passwordCallbackClass> 
      <ramp:TimeToLive>360</ramp:TimeToLive> 
      <ramp:signatureCrypto> 
       <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">pkcs12</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.file">C:\ESB_HOME\repository\resources\security\cert1.pfx</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">123456</ramp:property> 
       </ramp:crypto> 
      </ramp:signatureCrypto> 
      <ramp:encryptionCypto> 
       <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">pkcs12</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.file">C:\ESB_HOME\repository\resources\security\cert1.pfx</ramp:property> 
        <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">123456</ramp:property> 
       </ramp:crypto> 
      </ramp:encryptionCypto> 
     </ramp:RampartConfig>   
    </wsp:All> 

</wsp:ExactlyOne> 

+1

これまでに何を試しましたか?いくつかの文脈を与えて、コードをいくつか見せてください! – Pyves

+0

実際に私は多くのシナリオを試しましたが、私はそれぞれの最後に失われました 私はこの問題を扱うためのステップガイドで十分に文書化されたシナリオのステップがあります。 –

+0

はSOAPサービスですか? wsHttpBindingを保護するためのJKSファイルがありますか? –

答えて

0

、それは問題がSSLContextTokenを使用した場合のAxis2ので、私が変更されたことを理解していないので、問題があることがあるようですwsHttpBindingは次のようになります。

<security mode="Message"> 
    <message clientCredentialType="None" 
     negotiateServiceCredential="false" 
     establishSecurityContext="false"/> 
</security> 

すべてのものが正常に動作します。 今私は新しい認証方法を見つけなければなりませんが、少なくともメッセージは私たちの証明書で保護されています。

+0

これはあなたの質問に対する回答ですか?そうでない場合は、元の質問を編集してこれに追加します。 –