4

有没有人使用客户端证书进行身份验证和 PhoneGap 的经验?我有一个受客户端证书保护的 Web 应用程序,现在我想使用 PhoneGap 访问这个 Web 应用程序。Web 应用程序拒绝我的请求,因为找不到证书,它无法对我进行身份验证。我通过 Android 的默认浏览器下载了数据格式为 PKCS#12 的客户端证书,但我现在只存储在浏览器密钥库中,而不是 Android 的全局密钥库或类似的东西。所以总结一下:

1.) 是否可以在 Android 上使用客户端证书进行身份验证?2.) 如果是,PhoneGap 也可以吗?3.)如果再次是,我该如何完成?

谢谢!

问候, 拉尔夫

4

1 回答 1

6

迟到总比没有好:android 4+ 的问题(至少在 SDK 16 之前)是 webview 拒绝使用 SDK 隐藏的 onReceivedClientCertRequest 的客户端证书身份验证,它不能被覆盖。

这可以通过在 android.jar 中包含隐藏类来绕过(参见https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/)然后编译cordova(来自https://github.com/apache/incubator-cordova-android)覆盖 CordovaWebViewClient::onReceivedClientCertRequest。

我这样做是为了使 init 上的应用程序加载私钥和证书链(用户仅在第一个应用程序执行时从钥匙串中选择它)。这应该在另一个线程中完成;我怀疑这是不支持客户端证书身份验证的原因,因为主线程会等待用户选择要使用的证书和/或要加载的证书链,这是不可接受的。

编辑: 这是短暂的:似乎在 Android 4.2(SDK 17)中删除了 onReceivedClientCertRequest

结论太快了:他们只是将功能移至 WebViewClientClassicExt 类,因此您只需要从中扩展 CordovaWebViewClient 而不是 WebViewClient,它也适用于 4.2。

于 2012-11-13T14:30:57.330 回答