1

私たちのパートナーのWebサービスにアクセスする必要があります。 サービスはクライアント証明書と基本認証の両方で保護されています。 私はBasicHttpBindingでWCFを使用しています。クライアント証明書と基本認証を持つWCFクライアント

トランスポートレベルのセキュリティを使用して証明書に接続することができます。 私はもはや403エラーを取得していないので、証明書が動作していることは分かっていますが、移送時に資格情報を渡すことができないため、401が表示されています。 私が見ることから、1つのタイプのトランスポートセキュリティスキームしか持てません。

どうすればこの問題を解決できますか?

<security mode="Transport"> 
    <transport type="Certificate" /> 
    <transport type="Basic" /> 
</security> 

おかげ

+0

嘆願を使用すると、サービスの構成を明確にすることができ – Yahia

+0

... WCFサービスにアクセスしようとするクライアント・コードを示しています。彼らはWCFを使用していますか?もしそうなら、あなたはweb.configかサービス設定コードを表示できますか? –

+0

基本認証でトランスポートレベルでSSL(相互SSLではない)を使用し、クライアント証明書を使用してメッセージレベルの暗号化を使用する構成ですか? –

答えて

3

あなたはメッセージレベルで資格を渡そうとしましたしました。 あなたの設定は次のようになります。

<security mode="Transport"> 
     <transport clientCredentialType="Certificate" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
</security> 

し、コードに

WebServiceProxy objClient = new WebServiceProxy(); 
    objclient.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "clientCert"); 
objClient.ClientCredentials.UserName.UserName = "username"; 
objClient.ClientCredentials.UserName.Password = "Password"; 
+3

質問にはBasic Authenticatinを使用していたため、メッセージレベルではなくトランスポートレベルが使用されているとの質問がありました。 –

関連する問題