VIsual Studio 2010保留WCF服务参考密码?

时间:2012-03-21 03:46:11

标签: wcf visual-studio-2010 configuration passwords

我也不相信 - 我会向任何对加入我感兴趣的人展示!

这是交易。两台计算机,与添加服务引用的行为不同。

电脑1 - 我叫他BigMac
电脑2 - 我叫他Littlemac

我在BigMac上写了一个Web服务。还有一个Windows客户端应用程序来调用它。一切都很棒。将它部署到客户端的计算机上,一切都很棒。我们决定保护服务器,以便消费者必须将Windows用户名/密码传递给服务,我们将使用Https。 8个小时后,在这里和其他地方进行了大量搜索,我得到了它。服务器配置。看起来像这样:

<services>
  <service name="SecureWcfTestsApplication.Service1">
    <endpoint address=""
      binding="basicHttpBinding"
      bindingConfiguration ="Binding2"
      contract="SecureWcfTestsApplication.IService1" />
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="Binding2">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

将其部署在远程服务器上。转到任何Web浏览器,输入服务URL,输入用户名和密码,然后获取服务描述。一切都好。

但是 - 客户端代码可以在不提供任何凭据的情况下调用它。

客户端代码就是这样:

remote.Service1Client service1 = new remote.Service1Client();    service1.GetData(20);

就是这样。它从Visual Studio内部运行,并作为exe运行。如果我将exe复制到另一台机器上,它就不会运行。

好的 - 在BigMac(同一台计算机)上启动一个新项目 - 这里只有Windows应用程序没有服务实现。我添加远程服务引用,但它再次没有要求用户名和密码。我可以在没有任何凭据的情况下拨打该服务。

去LittleMac。打开Web浏览器并导航到该服务 - 我需要一个用户名/密码。打开Visual Studio,添加服务引用 - 我需要一个用户名/密码。客户端代码需要设置用户名/密码。

我重新启动了BigMac - 从头开始​​ - 新项目 - 添加Web引用 - 无需密码并运行。

跆拳道?任何人吗?

最佳

1 个答案:

答案 0 :(得分:0)

假设:您没有Windows域。

好的,让我们想一想“Windows”认证意味着什么。来自here

  

Windows身份验证

     

该服务通常在Windows域服务器可用时使用Kerberos,或在工作组配置中部署时使用NTLM。调用者为服务提供其Windows凭据(例如票证或令牌),并且该服务对Windows进行身份验证。

现在,假设您的网络中没有域,这意味着它实际上是针对运行Visual Studio和BigMac上的client.exe的本地帐户执行身份验证。由于您的本地帐户已经过身份验证(您已登录),因此客户端只需将令牌转发给Web服务即可进行身份验证。

另一方面,LittleMac在另一台机器上进行本地身份验证,这意味着它必须为运行Web服务的计算机上的本地帐户提供用户名和密码。

我不知道这是不是你的情况,我的描述可能不是100%真实在后台发生的事情,但无论如何WCF没有保留密码,所以不要担心: )

HTH