I have a web project that used to use Forms Authentication. I have new requirements to support Windows Authentication. This project contains two web services, one for a Silverlight page (MapService) and one for various ajax calls (AsyncService) Everything is now working, but there are 2 things I don't quite understand.
The configuration from Web.Config is as follows:
<bindings>
<basicHttpBinding>
<binding name="WindowsClientOverTcp">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="AsyncWindowsOverTcp">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="Project.MapService.MapService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="WindowsClientOverTcp" name="WindowsClientOverTcp" contract="Project.MapService.MapService" />
</service>
<service name="Project.AsyncService.AsyncService">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="AsyncWindowsOverTcp" name="AsyncWindowsOverTcp" behaviorConfiguration="Project.AsyncService.AsyncServiceAspNetAjaxBehavior" contract="Project.AsyncService.AsyncService" />
</service>
</services>
With this setup, is it basically required to use SSL? I've read that using Transport Security with Windows ClientCredentialType forces an HTTPS endpoint, which seems to be the case. I just want to know if it is reasonable to state generally to a client or management "If they want Windows authentication, our application must use https"
For the AsyncService, it clearly requires Windows credentials from the client, but I didn't have to change my JS/Ajax code at all and it still works fine. Is there some magic being done by the client browser? Since there's no client configuration, I don't get how the calls are authenticated.
Thanks