1

これに関して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 要求はクライアント認証で許可されていません サーバーから受け取った認証は基本的なレルムでした

公開鍵がサーバー上にあるクライアントだけがサービスにアクセスできるようにするにはどうすればよいですか?

この種の検証は、トランスポート セキュリティでは機能しませんか? 私を助けてください。ありがとう

4

0 に答える 0