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