2016-05-12 5 views
2

Моя команда разрабатывает веб-приложение .NET, которое будет работать на нескольких серверах Windows, и мы хотели бы использовать RavenDB для сохранения. У нашего клиента есть требование, чтобы пользовательский доступ к странице администрирования RavenDB требовал от пользователя представления действительного сертификата клиента для аутентификации. Мы планируем запустить RavenDB, размещенную на IIS и configure IIS to require a client certificate for access to the website, которые требуют, чтобы все запросы RavenDB использовали действительный сертификат клиента.Отправка сертификата клиента с помощью API клиента RavenDB

Обычно в .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.

Есть ли хорошие способы использования кода API RavenDB для отправки сертификата клиента для аутентификации моего запроса?

ответ

2

Да, вы можете сделать это с помощью события ConfigureRequest см: https://github.com/ayende/ravendb/blob/v3.5/Raven.Client.WinRT/Connection/HttpJsonRequestFactory.cs#L28

Это доступный из docuemntStore.JsonRequestFactory.ConfigureRequest

+0

я отвлеклась на то, что JsonRequesrFactory является получить только то, что я не думаю о тот факт, что объекты внутри него могут быть изменены. Похоже, это может сработать, я попробую. – Tyler

+0

Похоже, что JsonRequestFactory DocumentStore не является единственным местом, где HTTP-запросы поступают на сервер. Я получаю ошибку «Не могу договориться о новой репликации» от DocumentConvention, поэтому я думаю, что мне нужно сначала найти способ отправки сертификата клиента с этим запросом. – Tyler

+0

Вы делаете это после того, как метод 'Initialize' был вызван в хранилище документов? –