WebService非标准授权类型
Posted
技术标签:
【中文标题】WebService非标准授权类型【英文标题】:WebService non-standard Authorization Type 【发布时间】:2011-07-26 03:07:43 【问题描述】:我有一个服务提供商,他们的 Web 服务需要非标准的授权类型。
它们需要“基本 API 访问权限”,而不是 Basic、Digest、NTLM 等。
我已经尝试了下面的代码并使用 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/AvailabilityHTTP/1.1
用户代理:Mozilla/4.0(兼容;MSIE 6.0;MS Web 服务客户端 协议 4.0.30319.1) VsDebuggerCausalityData: uIDPo+CJPwpspBxKp939c... Content-Type: text/xml;字符集=utf-8 SOAPAction:“” 主机:america.webservicesxx.com 内容长度: 658 期望:100-继续
?xml version="1.0" encoding="utf-8"?> ?soap:信封 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"> ... ?/soap:信封>
它缺少...
授权:基本 API 访问/dUFQSS04NDA0NTk2MDk6WiFyYzBuZDg0...
...标题中的行。
如果我只使用"Basic"
,它会正确添加授权行,但会被服务提供商拒绝。
这是向 Soap 事务添加 Authorization:
标头的正确语法吗?
【问题讨论】:
【参考方案1】:我需要替换网络请求中的数据。
protected override System.Net.WebRequest GetWebRequest(Uri uri)
WebRequest request = base.GetWebRequest(uri);
request.Headers.Add("Authorization: Basic API Access dUFQSS04NDA0NT...");
return request;
在 Web 服务引用类中。
【讨论】:
以上是关于WebService非标准授权类型的主要内容,如果未能解决你的问题,请参考以下文章