Default Domain setting only applies when using Basic Authentication

I had a case yesterday where my customer was complaining that the Default Domain setting wasn’t working for him. For those of you who may not be aware, this setting allows the site admin to set the default domain users will be authenticated against when using Basic Authentication. This provides a nice shortcut for users of the site, so that they are not forced to type in, or for that matter remember, the domain that their user account exists in. 

In the case of my customer, they were accessing a SharePoint site and wanted to use the same URL for both internal and external users. The problem with this approach was that for internal users, they wanted to use Windows Integrated authentication to prevent them from having to enter credentials to access the site. Within IIS the customer had both Windows Integrated and Basic Authentication enabled. When my customer tried to access their site from outside their network, they were prompted for credentials (as expected) but entering only the username and password simply resulted in the dialog box being redisplayed with the DNS domain name pre-pended to the username. The customer wanted to know why the correct “Default Domain” wasn’t working.

In this case the customer was using IE as the browser. As you may have already guessed, the issue wasn’t with the Default Domain not working but the authentication method that was being used. IE will always select Windows Integrated over Basic when both are enabled for a site, so in this case the customer thought he was using Basic but was actually using Integrated. Since the Default Domain setting only applies to Basic, the customer was not able to log on only using the username and password.

My suggestion to the customer was to set up a second virtual directory or site for his internal users and point it to the same content and set the authentication to Windows Integrated and then remove Windows Integrated from the external site. The only caveat here is that you would have two different URLs to remember (unless you used some sort of proxy).

 HTTP/1.1 200 OK