2016-05-12 289 views
2

我的团队正在开发一个.NET Web应用程序,该应用程序可以在多个Windows服务器上运行,并且我们希望使用RavenDB进行持久化。我们的客户要求用户访问RavenDB管理页面将要求用户出示有效的客户端证书进行认证。我们计划运行托管在IIS上的RavenDB和configure IIS to require a client certificate for access to the website,它们要求RavenDB使用有效的客户端证书的所有请求。使用RavenDB客户端API发送客户端证书

通常在.NET连接客户端证书的http请求can be done with HttpClient simply by adding an X509Certificate to a WebRequestHandler and passing that to the HTTPClient constructor,我可以看到Raven.Client DocumentSession代码uses HttpClient in its code但我没有看到任何方式使用Raven.Client APIto连接客户端证书我在创建和使用DocumentStore或DocumentSession将数据保存到RavenDB时的请求。

有没有什么好的方法可以使用RavenDB客户端API代码来发送客户端证书来验证我的请求?

回答

2

是的,你可以做到这一点使用ConfigureRequest事件,请参阅: https://github.com/ayende/ravendb/blob/v3.5/Raven.Client.WinRT/Connection/HttpJsonRequestFactory.cs#L28

这是docuemntStore.JsonRequestFactory.ConfigureRequest

+0

我得到的事实,JsonRequesrFactory仅仅是我没有想到的分心访问它内部的对象可以被修改。这看起来可以工作,我会试一试。 – Tyler

+0

看来DocumentStore的JsonRequestFactory不是向服务器发出http请求的唯一地方。我收到DocumentConvention的“无法为新复制信息签约主服务器”错误,因此我认为我需要找到一种方法来首先发送包含该请求的客户端证书。 – Tyler

+0

你是否在文档存储上调用'Initialize'方法后执行此操作? –