2016-05-12 15 views
2

Mein Team entwickelt eine .NET-Webanwendung, die auf mehreren Windows-Servern ausgeführt wird, und wir möchten RavenDB für die Persistenz verwenden. Wir haben von unserem Kunden die Anforderung erhalten, dass der Benutzer beim Zugriff auf die RavenDB-Admin-Seite ein gültiges Client-Zertifikat zur Authentifizierung vorlegen muss. Wir planen, RavenDB auf IIS und configure IIS to require a client certificate for access to the website gehostet, die alle Anforderungen an RavenDB erfordern, ein gültiges Clientzertifikat zu verwenden.Senden eines Client-Zertifikats mit der RavenDB-Client-API

Regel in .NET Anbringen eines Client-Zertifikat auf eine HTTP-Anforderung can be done with HttpClient simply by adding an X509Certificate to a WebRequestHandler and passing that to the HTTPClient constructor, und ich kann sehen, dass die Raven.Client DocumentSession Code uses HttpClient in its code aber ich keine Möglichkeit sah, die Raven.Client Apito anhängen ein Client-Zertifikat zu verwenden, um Meine Anfrage beim Erstellen und Verwenden eines DocumentStore oder DocumentSession zum Speichern von Daten in RavenDB.

Gibt es eine gute Möglichkeit, RavenDB Client-API-Code zum Senden eines Client-Zertifikats zu verwenden, um meine Anfrage zu authentifizieren?

Antwort

2

Ja, können Sie tun, dass die ConfigureRequest Veranstaltung finden Sie unter: https://github.com/ayende/ravendb/blob/v3.5/Raven.Client.WinRT/Connection/HttpJsonRequestFactory.cs#L28

Dies ist von docuemntStore.JsonRequestFactory.ConfigureRequest

+0

ich durch die Tatsache abgelenkt bekommen hatte, dass JsonRequesrFactory nur bekommen, dass ich nicht über dachte die Tatsache, dass die Objekte darin verändert werden konnten. Das sieht so aus als könnte es funktionieren, ich werde es versuchen. – Tyler

+0

Es scheint, dass die JsonRequestFactory von DocumentStore nicht der einzige Ort ist, an dem HTTP-Anforderungen an den Server gestellt werden. Ich bekomme von DocumentConvention einen Fehler "Contracting Master für neue Replikationsinformationen", daher denke ich, dass ich einen Weg finden muss, um zuerst ein Client-Zertifikat mit dieser Anfrage zu senden. – Tyler

+0

Machst du das, nachdem die Methode 'Initialize' im Dokumentenspeicher aufgerufen wurde? –