2010-12-28 19 views
2

WCFクライアントを使用してhttpsでJavaベースのWS-Security対応Webサービスを呼び出そうとしています。 SvcTraceViewerを使用して、私が試したセキュリティ構成のどれかと予想されるセキュリティヘッダーが表示されません。Username over httpsを使用してWS-SecurityのWCFを設定する

私の最新のセキュリティ設定は次のとおりです。

<wsHttpBinding> 
     <binding name="MySoapBinding" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
       maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="TransportWithMessageCredential"> 
      <transport/> 
      <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false"/> 
      </security> 
     </binding> 
    </wsHttpBinding> 

と私は、このようなコードでは、ユーザー名/パスワードを設定します。Java Webサービスは、このようなセキュリティヘッダーを期待し

svc.ClientCredentials.UserName.UserName = TestBase.userName; 
    svc.ClientCredentials.UserName.Password = TestBase.password; 

<wsse:Security soap:mustUnderstand="1"> 
<wsu:Timestamp wsu:Id="Timestamp-bf41c571-7d32-438c-937e-7d83a3ac2d14"> 
<wsu:Created>2010-12-27T16:43:16Z</wsu:Created> 
<wsu:Expires>2010-12-27T16:48:16Z</wsu:Expires> 
</wsu:Timestamp> 
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-4c9b30b1-d697-4c64-89cb-a6d7e857aebf"> 
<wsse:Username>MyUserName</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">MyPassword</wsse:Password> 
<wsse:Nonce>pzLdD4S+OCDG6Ut9Ur1oOQ==</wsse:Nonce> 
<wsu:Created>2010-12-27T16:43:16Z</wsu:Created> 
</wsse:UsernameToken> 
</wsse:Security> 

セキュリティーヘッダーがまったく表示されません。

トランスポートとメッセージレベルのセキュリティとセキュリティモードについては、かなり読んだことがありますが、適切なオプションを見つけることはできません。どのように私は私のためにバインディングを設定する必要があり

  • HTTPS通信
  • タイムスタンプが
  • nonceが
+0

ヘッダーが含まれているかどうかを確認しますか? WCFは、保護されたトランスポートチャネル上のユーザー名トークンプロファイルをサポートしますが、追加要素を必要としないプレーンテキストパスワードのみをサポートします。だから私はノンスを送って要素を作っていないということをほほ笑む。 –

+0

@Ladislav:私はSvcTraceViewerを使ってローカルトレースログを表示しています(私のapp.configのメッセージログを有効にしています) –

答えて

3

を要求される要求

  • プレーンテキスト(WS-Securityの)におけるSOAPヘッダ内のユーザー名/ passowrd、 Rick Strahlはほぼ同じ問題を抱えています。 SvcTraceViewerはではないことがわかりました。は実際のオンザワイヤーメッセージを表示しています。しかし、彼のブログでは、実際のメッセージを見るためにチャールズ(あるいは私の場合はフリーであるフィドラー2)をプロキシする手順を概説している。

    私は呼び出しているWebサービスの要求に応じてTimestamp要素を送信していることが判明しましたが、もしそうであれば、WCFはレスポンスにTimestampを要求します。エラーメッセージはかなり誤解を招く。幸いにも、タイムスタンプを返すようにサービスを変更することができます。

    http://www.west-wind.com/weblog/posts/205198.aspx

  • +0

    SvcTraceViewerの実際のメッセージを見るには、logMessagesAtTransportLevel = "true" ' tmanthey

    関連する問題