SCENARIO
I have to access a web service with a .NET client. The service is an Apache CXF Web Service. Username and password authentication is requir
Eventually I had to invoke the service creating the whole SOAP message and making an HttpWebRequest
. In the SOAP message I manually specify the security header:
Foo
Bar
qM6iT8jkQalTDfg/TwBUmA==
2012-06-28T15:49:09.497Z
And here the service client:
String Uri = "http://web.service.end.point"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Uri);
req.Headers.Add("SOAPAction", "\"http://tempuri.org/Register\"");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
String SoapMessage = "MySoapMessage, including envelope, header and body"
using (Stream stm = req.GetRequestStream())
{
using (StreamWriter stmw = new StreamWriter(stm))
{
stmw.Write(SoapMessage);
}
}
try
{
WebResponse response = req.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
log.InfoFormat("SoapResponse: {0}", sr.ReadToEnd());
}
catch(Exception ex)
{
log.Error(Ex.ToString());
}
Interesting resources about Web Service Security (WSS):