[英]How can I use Windows Authentication with Microsoft.Rest.ServiceClient
[英]How to use Microsoft.Rest.ServiceClient<> with client certificate?
上下文
我有一个经过测试的工作Web API服务,它配置为客户端证书身份验证。 现在我想打电话给它并提供客户证书。 我想使用Microsoft.Rest.ServiceClient<>
因为我使用Visual Studio 2015“添加”/“REST Api客户端...”生成了我的类型化客户端类。
注意:我必须从文件或其他流加载我的X 509客户端证书,因为客户端将在PaaS环境中运行,因此我将无法访问任何操作系统提供的证书存储。
X509Certificate certificate = new X509Certificate(path, password);
题
对于较低的抽象级别,我知道如何将客户端证书添加到请求:
var request = (HttpWebRequest) WebRequest.Create(host);
request.ClientCertificates.Add (certificate);
但是,当使用更高抽象级别的类Microsoft.Rest.ServiceClient<>
我无法弄清楚将客户端证书引入调用管道的位置。
到目前为止我尝试过的
ServiceClientCredentials
抽象类,但只找到了两个后代:基于令牌和基本身份验证。 我找到了一种适合我的方法。 当我导入我的REST API客户端时,我修改了以下方法
原版的
protected CLASSNAME(Uri baseUri, HttpClientHandler rootHandler, params DelegatingHandler[] handlers) : this(rootHandler, handlers)
{
if (baseUri == null)
{
throw new ArgumentNullException("baseUri");
}
this.BaseUri = baseUri;
}
我把保护改为公开
public CLASSNAME(Uri baseUri, HttpClientHandler rootHandler, params DelegatingHandler[] handlers) : this(rootHandler, handlers)
{
if (baseUri == null)
{
throw new ArgumentNullException("baseUri");
}
this.BaseUri = baseUri;
}
如何使用
var handler = new WebRequestHandler();
var certFile = Path.Combine(@"path\to\your\certificate", "certificate.pfx");
handler.ClientCertificates.Add(new X509Certificate2(certFile,"<PASSWORD>"));
var client = new CLASSNAME(new Uri("URL"), handler);
//Do your methods on client
我希望这可以帮助你是一个有同样问题的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.