WCF: Single operation fails with MessageSecurityException - wcf

So what we have here is a fairly trivial WCF service with a bunch of operations. Now, all but one operation work just fine, but that single one fails with MessageSecurityException.
This particular method is just like any other method in this particular service: no fancy authentication or authorization attributes, no impersonation, no nothing. Just plain hit-the-DB-and-return-results kind of method. Security is set up as follows:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
Yet whenever it gets invoked, it fails with
The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLM'
I know this is a very open-ended question, but I hope someone has experienced the same.

Related

WCF service throwing authentication error on 1 server

We have a WCF Service thats deployed on 4 servers with load balancer.
Out of this 4, 1 of the server if its online throws below error.
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was ''
If that server is removed, rest 3 work fine but just 1 server has this issue.
Considering that the file and config is the same on all 4 servers, the only difference will be server or IIS setup.
Does anyone have any idea what could be the possible reason for this?
Its basicHttpBinding with
Server config:
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"/>
</security>
Client Config:
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
I think there is something wrong in IIS authentication configuration. please open the authentication module in the IIS hosted application, and then enable the corresponding authentication mode.
The specific authentication support depends on your project authentication mode.
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831496(v=ws.11)#Impersonation
Feel free to let me know if there is anything I can help with.

WCF client authentication scheme 'Basic'. to a java server

I'm trying to consume a java web service using basic authentication.
Using Soap UI I can receive a response when running a request with basic authentication.
The problem is using VS studio i'm having this error using basic authentification
"The HTTP request is unauthorized with client authentication scheme 'Basic'. The authentication header received from the server was 'Basic realm='weblogic'
enter code here
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
Your transport configuration specifies an empty realm while the server users weblogic. Try adding the same realm you used with SoapUI, eg:
<transport clientCredentialType="Basic" proxyCredentialType="None" realm="weblogic" />

Disable Windowsauthentication WCF

I'm using WCF to create a Client-Server Application and I'm having some problems with authentication, with wsHttpBinding Windowsauthentication seems to be turned on by default. The webservice worked perfectly inside my network but when I installed it somewhere else I suddenly had all these securityexceptions.
Though I want the webservice to be encrypted with https, i dont want windows authentication.
Although I can't try it at the moment I've found this Configuration:
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
Which might do the trick. This is my "old" one:
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
This is the configuration on the client side which i dont quite understand cause anybody could just change this easily. I'd expect to configure this on the server side but i havent yet found out how.
Ideas?
You can disable it through IIS Authentication settings for the site hosting your WCF by turning it off there and leaving anonymous on.
http://technet.microsoft.com/en-us/library/cc754628(v=ws.10).aspx

WCF wsHttpBinding in SoapUI

I am trying to add WCF service with wsHttpBinding to soapUI.
I am using message security and it works with test client but SoapUI returns
An error occurred when verifying security for the message
Here is service configuration:
<wsHttpBinding>
<binding name="wsHttpSecure">
<security mode="Message">
<message clientCredentialType="UserName" negotiateServiceCredential="true"
establishSecurityContext="false" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
Here http://www.soapui.org/SOAP-and-WSDL/applying-ws-security.html is a document but they say I need .jks file. I only have encoded public key value generated by SvcUtil in test client configuration file.
after a lot of research I found a solution on a blog.
You need to check the WS-A:To checkbox, located on the WS-A options tab.
After doing that, my problem was solved.
This is the blog containing the solution. Thanks David!!
this setting is not interoperable with soapUI:
negotiateServiceCredential="true"
change it to false

Security mode="None

I have some collegues who have build a WCF Service. Their security settings are the following:
security mode="None"
transport clientCredentialType="Windows" proxyCredentialType="None" realm=""
message clientCredentialType="Windows" negotiateServiceCredential="true"
establishSecurityContext="true"
security
Does it makes sense to specify the security mode="None" and then specify transport/message security underneath?
This is just basically NO SECURITY at all - that doesn't make any sense at all - except for maybe development time :-)
If you have <security mode="None"> then anything you specify below is not taken into account - you could leave that out just as well.
It does no harm, the mode="None" value means none of the individual settings for either message or transport will be used.