实例化RestClient或自定义Factory后能够设置ClientCertificates吗?

问题描述 投票:0回答:1

我们的 .NET 应用程序当前使用 RestSharp v106 和 Ninject。它使用客户端证书通过安全服务器对用户进行身份验证。用户启动应用程序,选择 Windows 证书存储中安装的证书之一,并通过用户密码或其他方法解锁它。此时,DI 容器已经创建了我们的

RestSharp.RestClient  
实例。

在restharp v107之前,我们将使用

RestSharpClient.ClientCertificates
通过
Authenticator
实现来添加或替换以前使用的证书与用户选择的证书。从 v107 开始,
ClientCertificates
RestClientOptions
的一部分,并且只能在实例化新
RestSharp.RestClient
时设置。

我们目前正在考虑实现一个类似于简单工厂的工厂 - 我们将使用证书标识符作为字典键,而不是基本 URL。

实例化

RestClient
后是否有其他方法来设置证书,或者这个工厂是一个可行的选择吗?

restsharp
1个回答
0
投票

有多种可能的方法可以解决我的问题中概述的问题。

选项 1 是编写一个工厂并延迟所有需要证书的

RestClient
的实例化,直到证书可用。我们测试了这种方法,效果很好。

第二个选项是设置一个自己的

HttpClientHandler
并将其传递给
RestClient
构造函数 [0]。
HttpClientHandler
提供了一个名为
X509CertificateCollection
ClientCertificates
属性,可用于在运行时添加和删除证书。然而,这样做可能不是线程安全的。


[0] 我们仅将

HttpClientHandler
直接与
HttpClient
一起使用。由于外部因素,我们不得不放弃 RestSharp。可以相当安全地假设将
RestClient(HttpMessageHandler)
HttpClientHandler
一起使用会产生类似的效果。

© www.soinside.com 2019 - 2024. All rights reserved.