2012-04-12 7 views
4

hat jemand Erfahrung mit der Verwendung von Client-Zertifikaten für die Authentifizierung und PhoneGap? Ich habe eine Web-Anwendung, die durch Client-Zertifikate gesichert ist, und möchte nun mit PhoneGap auf diese Web-App zugreifen. Die Webanwendung verweigert meine Anfrage, weil sie mich nicht authentifizieren konnte, weil kein Zertifikat gefunden wurde. Ich habe das Client-Zertifikat mit dem Datenformat PKCS # 12 über den Standard-Browser von Androids heruntergeladen, aber ich glaube, es ist jetzt nur im Keystore des Browsers gespeichert, anstatt eines globalen Keystores von Android oder so ähnlich. Also, um dies zusammenzufassen:Authentifizierung mit Client-Zertifikaten mit PhoneGap

1.) Ist es möglich, Client-Zertifikate für die Authentifizierung auf Android sowieso zu verwenden? 2.) Wenn ja, ist das auch mit PhoneGap möglich? 3.) Wenn ja, wie kann ich es erreichen?

Danke!

Grüße, Ralf

+1

Wirklich ?? Niemand?? Bitte!! Eine Sache, die ich jetzt herausgefunden habe ist, dass Client-Zertifikate nur auf Android 4+ funktionieren – RaHe

Antwort

6

besser spät als nie: das Problem für Android 4+ (mindestens bis SDK 16) ist, dass webview verwirft Client-Zertifikat-Authentifizierung mit SDK verborgenem onReceivedClientCertRequest, die außer Kraft gesetzt werden können.

Dies kann mit darunter verborgenen Klassen (siehe https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/) und dann cordova (von https://github.com/apache/incubator-cordova-android) mit überschriebene CordovaWebViewClient :: onReceivedClientCertRequest Kompilieren android.jar umgangen werden.

Ich tat es so, dass die App auf init lädt privaten Schlüssel und Zertifikatskette (Benutzer wählt es aus Schlüsselbund nur auf der ersten App Exec). Dies sollte in einem anderen Thread geschehen; Ich vermute, dies ist der Grund, warum Client-Cert-Authentifizierung noch nicht unterstützt wird, da der Haupt-Thread darauf warten würde, dass der Benutzer das zu verwendende Zertifikat und/oder die zu ladende Zertifikatskette auswählt, was inakzeptabel ist.

EDIT: Dies war kurzlebig: es scheint, gibt die onReceivedClientCertRequest in Android entfernt 4.2 (SDK 17)

Die Schlussfolgerung war zu schnell: sie nur um die Funktionalität zu WebViewClientClassicExt Klasse bewegt, so dass Sie nur müssen CordovaWebViewClient von diesem und nicht WebViewClient erweitern, und es funktioniert auch für 4.2.

+0

Ich scheint, dass WebViewClientClassicExt nicht in Android.Webkit-Paket für Android 4.2 und 4.3 existiert. – ridan