これに関してSOで同様の質問をいくつか見つけることができますが、これに対する答えについてはかなり確信が持てません。これに関するさまざまな投稿を読むと、ますます混乱します。だから私の満足のためにこれを求めます。
IIS でホストされている WCF サービスがあります。このサービスに接続してメソッドを呼び出すクライアントがあります。私は今、トランスポート セキュリティを利用するために証明書を使用しようとしています。
クライアント側には設定があります
<bindings>
<basicHttpBinding>
<binding name="testBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="testBehavior">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="client007"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
サーバー側には構成があります
<behaviors>
<serviceBehaviors>
<behavior name="testServiceBehavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="LocalMachine"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="testServiceBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
今、私が望むシナリオは、サーバーの信頼できる人に公開鍵がインストールされているクライアントのみがサービスにアクセスできるということです。
しかし、私の場合、信頼できる人に公開鍵をインストールするかどうか。自分で作成した証明書を使用してサービスにアクセスできます。
匿名認証が有効になっていることを確認しましたが、これが原因ですか? 匿名アクセスを無効にすると、次のエラーが表示されます
http 要求はクライアント認証で許可されていません サーバーから受け取った認証は基本的なレルムでした
公開鍵がサーバー上にあるクライアントだけがサービスにアクセスできるようにするにはどうすればよいですか?
この種の検証は、トランスポート セキュリティでは機能しませんか? 私を助けてください。ありがとう