2016-10-07 2 views
2

Zusammenfassung
ich eine Xamarin.Forms App schreibe, die Anforderungen an einen REST-API machen muss. Es muss ein Client-Zertifikat verwenden, um eine 2-Wege-SSL zu erstellen, wenn es mit dem Backend spricht.Anruf RESTful Service mit Client-Zertifikat in Xamarin.Forms

Ich möchte all dies in einem PCL wenn möglich getan werden. Was ist der beste Weg, dies zu tun?

Was ich bisher
Xamarin.Forms haben nicht enthalten das Paket System.Net.Security. Aus diesem Grund kann ich nicht den normalen HttpClient von System.Net.Http.HttpClient mit Client-Zertifikaten verwenden. Also brauche ich ein anderes Verschlüsselungspaket und einen anderen http-Client, der mit diesem Paket kompatibel ist.

Ich habe die Bouncy Castle Distribution für C# gefunden, die mit der Erstellung und Verwaltung des Client-Zertifikats umzugehen scheint. Aber ich habe keinen HTTP-Client gefunden, der tatsächlich eine Org.BouncyCastle.X509X509Certificate verwenden kann, um 2-Wege-SSL einzurichten.

Bearbeiten Es scheint also, es gibt keine Möglichkeit, Client-Zertifikate im gemeinsam genutzten Code zu verwenden (bitte erleuchten Sie mich, wenn ich falsch liege!). Ich muss DependencyService verwenden, um eine iOS- und eine Android-Implementierung der Bibliothek unter Verwendung verschiedener HTTP-Stacks zu erstellen.

+0

AFAIK, Ihre Bearbeitung ist korrekt, es gibt keine Option, Client-Zertifikat in PCL zu verwenden –

+0

Wir haben die gleiche Antwort von den Entwicklern auf Xamarin, leider. Also gehen wir mit 3 plattformspezifischen Implementierungen vor, um zu sehen, wie viel Zeit es braucht. –

Antwort

0

Ich weiß, wie Sie über PCL fühlen. Ich schrieb diese Bibliothek, die eine .NET-Standard-Bibliothek, die auch PCL zielt, so dass es mit Xamarin Forms verwendet werden können:

https://bitbucket.org/MelbourneDeveloper/restclient-.net/overview

Es gibt mehrere Proben diese auf immer mit Xamarin Forms laufen. Was die Verwendung des Zertifikats betrifft, wie Sie erwähnt haben, bin ich nicht sicher, ob Sie etwas Besonderes tun müssen, aber ich könnte mich irren. Wenn Sie mir ein bisschen mehr darüber erzählen können, was notwendig ist, um dieses Zertifikat zu verwenden, könnte ich mir überlegen, ob ich die Funktionalität der Bibliothek hinzufügen könnte.