【发布时间】:2019-06-20 15:45:13
【问题描述】:
上下文
我有一个经过测试的工作 Web API 服务,它被配置为客户端证书身份验证。现在我想调用它并提供一个客户端证书。我想使用Microsoft.Rest.ServiceClient<>,因为我使用 Visual Studio 2015 "Add"/"REST Api client..." 生成了我的类型化客户端类
注意:我必须从文件或其他流中加载我的 X 509 客户端证书,因为客户端将在 PaaS 环境中运行,因此我无法访问任何操作系统提供的证书存储。
X509Certificate certificate = new X509Certificate(path, password);
问题
对于较低的抽象级别,我知道如何将客户端证书添加到请求中:
var request = (HttpWebRequest) WebRequest.Create(host);
request.ClientCertificates.Add (certificate);
但是,当使用更高抽象级别的类 Microsoft.Rest.ServiceClient<> 时,我无法弄清楚将客户端证书引入调用管道的位置。
到目前为止我所做的尝试
- 我检查了一些相关类的属性,没有证书 找到相关属性/方法
- 我检查了
ServiceClientCredentials抽象类,但只找到了两个后代:用于基于令牌的身份验证和基本身份验证。 - 我试图在发送之前找到一些 IoC 工具来获取请求:没有成功。
【问题讨论】:
-
似乎加载证书并获取 ServiceClient 的类是:github.com/Azure/autorest/blob/master/ClientRuntimes/CSharp/…
-
非常感谢。当“我检查了 ServiceClientCredentials 抽象类,但只找到了两个后代:基于令牌和基本身份验证”时,这是我对解决方案的猜测这个类。
标签: c# .net rest asp.net-web-api client-certificates