We've set establishSecurityContext="False" and negotiateServiceCredential="False" on a wsHttpBinding. In a setup where every single web service call involves connecting and disconnecting, this reduces the number of requests per web service call from 5 to 1, providing a significant performance improvement.
The client has been configured to know the server identity via the identity node:
<endpoint address="..." behaviorConfiguration="..." binding="wsHttpBinding" bindingConfiguration="..." contract="..." name="...">
<identity>
<certificate encodedValue="..." />
</identity>
</endpoint>
What are the security implications of these settings? Do they reduce security in any way?
NegotiateServiceCredential, true if service credential is obtained through a process of negotiation; otherwise, false. The default is true.
https://learn.microsoft.com/en-us/dotnet/api/system.servicemodel.messagesecurityoverhttp.negotiateservicecredential?redirectedfrom=MSDN&view=netframework-4.7.2#System_ServiceModel_MessageSecurityOverHttp_NegotiateServiceCredential
EstablishSecurityContext. True: If a secure conversation is established using SecurityContextToken. otherwise, false, the default is false.
https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-2.0/aa715023(v=msdn.10)