2016-05-12 232 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'方法後執行此操作? –