WebService非标准授权类型

时间:2011-03-30 13:55:32

标签: web-services authorization asmx

我有一个服务提供商,他们的网络服务需要非标准的授权类型。

而不是Basic,Digest,NTLM等,它们需要“基本API访问”。

我已尝试过以下代码,并使用Fiddler检查Web服务请求。

似乎没有任何自定义字符串可以使用

    Binding avail = new Binding();
    avail.Url = "https://amer.webservicesxx.com/Availability";

    NetworkCredential netCredential = new NetworkCredential("abc", "def");
    Uri uri = new Uri(avail.Url);

    CredentialCache cred = new CredentialCache();
    cred.Add(uri, "Basic API Access", netCredential);
    avail.Credentials = cred;

    SearchRsp response = avail.service(request);
  

POST https://amer.webservicesxx.com/Availability HTTP / 1.1

     

User-Agent:Mozilla / 4.0(兼容; MSIE 6.0; MS Web Services Client   协议4.0.30319.1)
VsDebuggerCausalityData:   uIDPo + CJPwpspBxKp939c ...
内容类型:text / xml;字符集= UTF-8
  SOAPAction:“”主持人:america.webservicesxx.com
内容长度:   658
期望:100-继续

     

?xml version =“1.0”encoding =“utf-8”?> ?肥皂:信封   的xmlns:SOAP = “http://schemas.xmlsoap.org/soap/envelope/”   xmlns:xsi =“http://www.w3.org/20 01 / XMLSchema-instance”   的xmlns:XSD = “http://www.w3.org/2001/XMLSchema” > ...     ?/皂:信封>

缺少......

授权:基本API访问/ dUFQSS04NDA0NTk2MDk6WiFyYzBuZDg0 ...

...标题中的行。

如果我只使用"Basic",它会正确添加授权行,但会被服务提供商拒绝。

这是向Soap事务添加Authorization:标头的正确语法吗?

1 个答案:

答案 0 :(得分:0)

我需要替换网络请求中的数据。

protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
     WebRequest request = base.GetWebRequest(uri);
     request.Headers.Add("Authorization: Basic API Access dUFQSS04NDA0NT...");

     return request; 
 }

在Web服务引用类中。