我有一個使用basicHTTP綁定的WCF服務。該服務的目標是在運行IIS 7.0的Windows Server 2008 64位的DMZ環境中在生產環境中部署 ,而在Active Directory域中則不是 。Internet上的WCF身份驗證
該服務將由業務合作伙伴通過Internet訪問,並提供SSL保護。本來, 我已經建成使用X.509消息認證用的WSHttpBinding和大量的 問題,我踢,並決定備份和使用basicHTTP與用戶名的身份驗證後,該服務。
結果:如我有證書的模式中接收完全相同的,模糊的錯誤消息。
服務完美的作品我們的領域內具有完全相同的認證,但只要 我把它移到DMZ我得到一個錯誤讀數:「無抵押或不正確安全的故障收到 從對方見內部FaultException爲故障代碼和詳細信息「。
內部異常信息是:「爲消息驗證安全時發生錯誤。」
的服務與綁定配置的web配置如下:
<services>
<service behaviorConfiguration="HSSanoviaFacade.Service1Behavior" name="HSSanoviaFacade.HSSanoviaFacade">
<endpoint address="" binding="basicHttpBinding" contract="HSSanoviaFacade.IHSSanoviaFacade" bindingConfiguration="basicHttp">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="https://FULLY QUALIFIED HOST NAME CHANGED TO PROTECT/>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicHttp">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="HSSanoviaFacade.Service1Behavior">
<serviceMetadata httpsGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
是獲得誤差測試客戶端的配置:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IHSSanoviaFacade" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://HOST NAME CHANGED TO PROTECT"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHSSanoviaFacade"
contract="MembersService.IHSSanoviaFacade" name="BasicHttpBinding_IHSSanoviaFacade" />
</client>
正如前面提到的,服務完美的作品在域生產IIS框不在域中。 我一直在調整,現在拉出我的頭髮2周,似乎沒有任何工作。如果任何人都可以幫助我 將不勝感激。甚至還提供了一個解決身份驗證的建議。我寧可不使用自定義 身份驗證方案,但使用內置的SOAP功能。
憑證傳遞直通代理即proxy.ClientCredentials.UserName.UserName和 proxy.ClientCredentials.UserName.Password是在測試環境 並作爲在DMZ IIS計算機帳戶兩者內部域有效的帳戶框。