How can I add a Basic Auth Header to my SOAP?

Fernando André picture Fernando André · Feb 9, 2011 · Viewed 25.6k times · Source

I'm trying to send a Authentication header through to a WSDL service that does not have the authentication requirement specified on the WSDL.

How can I add the Auth header to the call for the web service ?

Code I have been working with:

using System;
using System.Web.Services.Protocols;

namespace TesteSoap
{           
    class MainClass
    {
        public static void Main (string[] args)
        {

            WSDLService Service = new WSDLService();
            /* How can I add authentication to the call of this webservice ? */
            Service.get();
            Console.WriteLine ("Hello World!");
        }
    }
}

Answer

Fernando André picture Fernando André · Feb 10, 2011

This problem is questioned in other link but in a different way related to the WSDL including the question for user/password.

link

They aren't the same question but the problem is related.

Michaelis.MockService is the Webservice library extracted you may see an example on how to do this in: link Mono project website.

Michaelis.MockService service = new Michaelis.MockService();

// Create the network credentials and assign
// them to the service credentials
NetworkCredential netCredential = new NetworkCredential("Inigo.Montoya", "Ykmfptd");
Uri uri = new Uri(service.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
service.Credentials = credentials;

// Be sure to set PreAuthenticate to true or else
// authentication will not be sent.
service.PreAuthenticate = true;

// Make the web service call.
service.Method();