android - 使用 PhoneGap 的客户端证书进行身份验证

标签 android security authentication cordova certificate

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

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

谢谢!

问候,拉尔夫

最佳答案

迟到总比不到好:android 4+(至少到 SDK 16)的问题是 webview 拒绝使用 SDK 隐藏的 onReceivedClientCertRequest 的客户端证书身份验证,这是无法覆盖的。

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

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

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

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

关于android - 使用 PhoneGap 的客户端证书进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125770/

相关文章:

android - layout_above 无法与 layout_alignParentBottom 一起正常工作

android - 如何制作安卓:layout_gravity ="bottom|center_horizontal" stays at bottom

.net - 打开文件 - 安全警告

php - 直接来自数据库的值是否需要转义?

android - 无法安装LibGDX [构建工具27.0.2]

security - 检查 SSL 属性 ASIHTTPRequest

node.js - google-spreadsheet.js (npm) 只读访问不使用 API KEY 的单元格 - 需要 OAuth?

php - Htaccess - Http 身份验证 - 为什么此 block 对我造成 500 错误?

android - 替换已弃用的 Android Facebook 代码

android - 无法使用 Android BluetoothProfile 连接到蓝牙 Health Device Fora