2012-01-10 11 views
0

Webサービスに接続するために、WCFクライアントでSSLとHTTP認証を使用する必要があります。私は以下に示すようにwcfクライアントバインディングの設定を持っており、証明書をロードしてHTTP認証のためのユーザー名とパスワードを渡すためのコードを持っています。これを試してみたところ、「httpリクエストはクライアント認証スキーム「匿名」で権限がありません。サーバーからの認証は 'Basic realm = "ws.dataway.com:443"でした。エラー:(401)許可されていないが、誰がこれを解決する方法を教えてくれとバインディング設定で変更する必要があるものをくださいすることができ感謝WCFクライアントでSSLとHTTP認証を使用するセキュリティモードはどれですか?

  <basicHttpBinding> 
      <binding name="OrderBinding" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="Transport"> 
        <transport clientCredentialType="Certificate" proxyCredentialType="None" 
         realm="" /> 
       </security> 
      </binding> 
      </basicHttpBinding> 

コード:?!

  ClientCredentials loginCredentials = new ClientCredentials(); 
      loginCredentials.UserName.UserName = this.UserId; 
      loginCredentials.UserName.Password = this.Password; 
      loginCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByIssuerName, "link.com"); 

      var defaultCredentials = channelFactory.Endpoint.Behaviors.Find<ClientCredentials>(); 
      channelFactory.Endpoint.Behaviors.Remove(defaultCredentials); 
      channelFactory.Endpoint.Behaviors.Add(loginCredentials); 
+0

クライアント証明書と基本認証の両方を使用していますか? –

+0

はい、私のWebサービスのドキュメントでは、wcfクライアントはセキュリティのためにクライアント証明書を提供しなければならず、Webサービスへのすべての呼び出しでHTTP基本認証も必要となります。ありがとう! – Jyina

+0

ありがとう! wcfクライアントで証明書とHTTPの基本認証を指定できますか? – Jyina

答えて

2

このカスタムが結合してみてください。

<customBinding> 
    <binding name="Secured"> 
     <textMessageEncoding messageVersion="Soap11" /> 
     <httpsTransport authenticationScheme="Basic" 
         realm="ws.dataway.com:443" 
         requireClientCertificate="true" /> 
    </binding> 
    </customBinding> 
+0

どうもありがとうございます。それは素晴らしい仕事です。私はこれを考え出して何時間も過ごしました。 – Jyina

関連する問題