开发者

Integrated Windows Authentication WCF Multiple Host Headers IIS 6 not working

开发者 https://www.devze.com 2023-01-20 01:13 出处:网络
I have a asp.net 2.0 web site with WCF service hosted inside it running on .NET 3.5 framework. The website is setup with Integrated Win开发者_StackOverflow中文版dows Authentication only. The web serve

I have a asp.net 2.0 web site with WCF service hosted inside it running on .NET 3.5 framework. The website is setup with Integrated Win开发者_StackOverflow中文版dows Authentication only. The web server is IIS 6 with load balancing on Windows 2003 Sp2 (2 servers). I am unable to access the WCF service (.svc) using the full url (http://myqa2.abcdefg.com/trxn/WCFTrxnService.svc). Also note that the server is configured with multiple host headers. The website is protected by siteminder. Initially I was getting an error

This collection already contains an address with scheme http. There can be at most one address per scheme in this collection. Parameter name: item

So added the following config entry

<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <clear/>
    <add prefix="http://myqa2.abcdefg.com"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

That error went away, but now I am being prompted for login by the browser. For same website, I am able to access .aspx page. The login prompt is appearing only for .svc file.

Here is the binding / endpoint from config file that I am using.

<system.serviceModel>
<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <clear/>
    <add prefix="http://myqa2.abcdefg.com"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>
<bindings>
  <basicHttpBinding>
    <binding name="IISIntegratedAuthBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="TestWCFFromSL.Web.WCFTrxnServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpGetUrl="http://myqa2.abcdefg.com/fmc/WCFNotesService.svc"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="TestWCFFromSL.Web.WCFTrxnService" behaviorConfiguration="TestWCFFromSL.Web.WCFTrxnServiceBehavior">
    <endpoint
      address="http://myqa2.abcdefg.com/trxn/WCFTrxnService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="IISIntegratedAuthBinding"
      contract="TestWCFFromSL.Web.IWCFTrxnService" />
  </service>
</services>
<!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>-->


if a website is protected by SiteMinder, WCF / SOAP calls don't work. But a different solution to this problem is working.

The URL myqa2.abcdefg.com/trxn/WCFTrxnService.svc is protected by SiteMinder, but myqa2/trxn/WCFTrxnService.svc is not protected by siteminder, Looks like SiteMinder only protects FQDN (Fully Qualified Domain Names). So I configured the application to call WCF service using short url instead FQDN. I also had to use crossdomainpolicy because the application considers myqa2.abcdefg.com and myqa2 as 2 seperate domains.

0

精彩评论

暂无评论...
验证码 换一张
取 消