2012-03-30 4 views
0

私はws-security 1.2のWebLogic Webサービスを使用しようとしています。 WSDLでは weblogic webservice ws-security 1.2を消費するカスタムバインディング

は、セキュリティセクションは以下の通りです:私は、私は次のような構成になってしまったWCFにおける新たなんだので、検索の多くの後

<wsp:UsingPolicy wssutil:Required="true"/> 
<wsp1_2:Policy wssutil:Id="Wssp1.2-2007-SignBody.xml"> 
<ns1:SignedParts xmlns:ns1="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
<ns1:Body/> 
</ns1:SignedParts> 
</wsp1_2:Policy> 
<wsp1_2:Policy wssutil:Id="Wssp1.2-2007-Wss1.0-X509-Basic256.xml"> 
<ns2:AsymmetricBinding xmlns:ns2="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
<wsp1_2:Policy> 
<ns2:InitiatorToken> 
<wsp1_2:Policy> 
<ns2:X509Token ns2:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
<wsp1_2:Policy> 
<ns2:WssX509V3Token10/> 
</wsp1_2:Policy> 
</ns2:X509Token> 
</wsp1_2:Policy> 
</ns2:InitiatorToken> 
<ns2:RecipientToken> 
<wsp1_2:Policy> 
<ns2:X509Token ns2:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"> 
<wsp1_2:Policy> 
<ns2:WssX509V3Token10/> 
</wsp1_2:Policy> 
</ns2:X509Token> 
</wsp1_2:Policy> 
</ns2:RecipientToken> 
<ns2:AlgorithmSuite> 
<wsp1_2:Policy> 
<ns2:Basic256/> 
</wsp1_2:Policy> 
</ns2:AlgorithmSuite> 
<ns2:Layout> 
<wsp1_2:Policy> 
<ns2:Lax/> 
</wsp1_2:Policy> 
</ns2:Layout> 
<ns2:IncludeTimestamp/> 
<ns2:ProtectTokens/> 
<ns2:OnlySignEntireHeadersAndBody/> 
</wsp1_2:Policy> 
</ns2:AsymmetricBinding> 
<ns3:Wss10 xmlns:ns3="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
<wsp1_2:Policy> 
<ns3:MustSupportRefKeyIdentifier/> 
<ns3:MustSupportRefIssuerSerial/> 
</wsp1_2:Policy> 
</ns3:Wss10> 
</wsp1_2:Policy> 
<wsp:Policy wssutil:Id="Wssp1.2-2007-Wsp1.5-EncryptBody.xml"> 
<ns4:EncryptedParts xmlns:ns4="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
<ns4:Body/> 
</ns4:EncryptedParts> 
</wsp:Policy> 

<system.serviceModel> 
<client> 
    <endpoint name="wssMutualCert_Client" 
    address="https://..." 
    binding="customBinding" 
    bindingConfiguration="custom1" 
    contract="MyWebService.WebServicesMainMethod" 
    behaviorConfiguration="MutualCertBehavior"> 
    </endpoint> 
</client> 
<bindings> 
    <customBinding> 
     <binding name="custom1" closeTimeout="00:01:00" 
    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"> 

      <textMessageEncoding messageVersion="Soap11" writeEncoding="UTF-8" /> 
      <security defaultAlgorithmSuite="Basic256" 
         authenticationMode="MutualCertificateDuplex" 
         includeTimestamp="True" 
         messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" 
         securityHeaderLayout="LaxTimestampLast" messageProtectionOrder="SignBeforeEncrypt"> 
       <localClientSettings maxClockSkew="00:07:00" /> 
       <localServiceSettings maxClockSkew="00:07:00" /> 
       <secureConversationBootstrap> 
        <localClientSettings maxClockSkew="00:07:00" /> 
        <localServiceSettings maxClockSkew="00:07:00" /> 
       </secureConversationBootstrap> 
      </security> 
      <context protectionLevel="EncryptAndSign"/> 
      <httpsTransport requireClientCertificate="true" maxBufferPoolSize="20000000" maxBufferSize="20000000" maxReceivedMessageSize="20000000"/> 
     </binding> 

    </customBinding> 
    <ws2007HttpBinding> 
     <binding name="wssMutualCertBinding"> 
      <security mode="TransportWithMessageCredential"> 
       <message clientCredentialType="Certificate"/> 
       <transport clientCredentialType="Certificate"/> 
      </security> 
     </binding> 
    </ws2007HttpBinding> 
</bindings> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="MutualCertBehavior"> 
      <clientCredentials> 
       <serviceCertificate> 
        <defaultCertificate 
         findValue="XXXXX" 
         storeLocation="LocalMachine" 
         storeName="TrustedPeople" x509FindType="FindByThumbprint"/> 
       </serviceCertificate> 
       <clientCertificate 
        findValue="YYYYY" 
        storeLocation="LocalMachine" 
        storeName="TrustedPeople" x509FindType="FindByThumbprint"/> 
      </clientCredentials> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 
<system.serviceModel> 

マイテストAPPLは、次のようになります。

static void Main(string[] args) 
{ 
    MyWebService.WebServicesMainMethodClient client = new WebServicesMainMethodClient("wssMutualCert_Client"); 
    MyWebService.webRequest request = new webRequest(); 
    ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCallback; 

    try 
    { 
     webResponse response = client.retrieve(request); 
    } 
    catch (Exception e) 
    { 
     throw e; 
    } 
} 
public static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
{ 
    return true; 
} 

、これまでどのような変更私は私の設定I receiにしてみてください次のように入力します。

An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail. 

Server stack trace: 
    at  System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply  (Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout) 
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request  (Message message, TimeSpan timeout) 
    at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message,  TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway,  ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway,  ProxyOperationRuntime operation, Object[] ins, Object[] outs) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 
Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at Client.MyWebService.WebServicesMainMethod.retrieve(retrieve request) 

私はほぼ2日後に役立つ情報を探しています。私は時間の同期問題、証明書の問題を調査しました。 すべてのアイデアまたは推奨事項は非常に役立ちます。 ありがとうございます。

+0

サンプルの作業用石鹸を公開してください(ベンダーから質問してください) –

+0

同様の問題がある場合は、このSOの質問を調べる価値があります。このSOの質問はhttp:// stackoverflowに役立ちます。 com/questions/24635950/remove-timestamp-element-from-ws-security-headers-created-by-wcf – Ruskin

答えて

0

エラーは、SOAPリクエストWCF送信がweblogicセキュリティ設定と互換性がないことを意味します。通常、WCFのタイムスタンプやテキストとしてのパスワードには問題がありますが、多くの場合、非ネットサービスではダイジェストモードが必要です。簡単な解決策はありません。 thisthisを読んでください。私はWSE 3.0にダウングレードして、Javaベースのサービスに要求を送信できるようにしました。これを達成する方が簡単です。

+0

ありがとうございますが、私はWSE 3.0がws-security 1.2をサポートしていないと思います –

関連する問題