I have a couple of WCF services that call each other (that is, being clients of each other). They all use netTcpBinding with Windows authentication and are hosted on IIS on different machines in the same domain.
In the customer' test environment I had to set the following in each client's web.config/app.config in order for it to successfully call the other services:
<identity>
<userPrincipalName="serviceuser@mydomain"
</identity
However, in my own test environment, which uses the same Windows versions and IIS settings, and the same number of machines, there was no need for any element.
Why? What factors determine that I need to set userPrincipalName on clients? Is it something I can control as a developer, or is it determined by the environment the services are running in?