具有Windows身份验证的Silverlight和WCF

时间:2011-02-21 17:42:49

标签: windows silverlight wcf authentication

我在ASP.NET Web应用程序中有一个Silverlight应用程序。然后,我在ASP.NET应用程序中托管了一个WCF服务库。我已将安全性设置为TransportWithCredentialOnly和Windows身份验证。这是一个Intranet场景。

在测试服务器上的IIS7中,我禁用了匿名身份验证并启用了Windows身份验证。通过此设置,WCF调用失败。

如果启用匿名身份验证,则可以正常运行。如果无法禁用匿名身份验证,Windows身份验证的重点是什么。

当我在IE中使用Web Helper时,似乎有一个对服务的调用类似于获得服务定义时需要匿名身份验证。我假设对Service方法的实际调用仍然会被正确验证。

当我感到困惑时,任何人都可以对此有所了解。我们将在几个月内拥有渗透测试人员,我担心他们不会喜欢他们可以看到Fiddler或类似的服务调用,然后他们可以复制并粘贴到地址栏以获取服务定义。在他们非常特别之前与他们合作,他们可以从应用程序获得的任何信息都是减号。在我的特定行业中,安全性非常重要。

如果我这样做错了,我们将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

我已经在努力解决同样的问题。我修改了我的web.config文件修复了我的问题。以下是我的内容。

我希望这会对你有所帮助!

祝你好运。

<system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="MyAp.Web.Services.MyAppSvc.customBinding0">
          <binaryMessageEncoding>
            <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
          </binaryMessageEncoding>
          <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" authenticationScheme="Ntlm" unsafeConnectionNtlmAuthentication="true" />
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service name="MyApp.Web.Services.MyAppSvc">
        <endpoint address="" binding="customBinding" bindingConfiguration="MyApp.Web.Services.MyAppSvc.customBinding0" contract="MyApp.Web.Services.MyAppSvc" />
        <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>-->
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>