我在ASP.NET Web应用程序中有一个Silverlight应用程序。然后,我在ASP.NET应用程序中托管了一个WCF服务库。我已将安全性设置为TransportWithCredentialOnly和Windows身份验证。这是一个Intranet场景。
在测试服务器上的IIS7中,我禁用了匿名身份验证并启用了Windows身份验证。通过此设置,WCF调用失败。
如果启用匿名身份验证,则可以正常运行。如果无法禁用匿名身份验证,Windows身份验证的重点是什么。
当我在IE中使用Web Helper时,似乎有一个对服务的调用类似于获得服务定义时需要匿名身份验证。我假设对Service方法的实际调用仍然会被正确验证。
当我感到困惑时,任何人都可以对此有所了解。我们将在几个月内拥有渗透测试人员,我担心他们不会喜欢他们可以看到Fiddler或类似的服务调用,然后他们可以复制并粘贴到地址栏以获取服务定义。在他们非常特别之前与他们合作,他们可以从应用程序获得的任何信息都是减号。在我的特定行业中,安全性非常重要。
如果我这样做错了,我们将不胜感激任何帮助。
答案 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>