WebView 或更具体地说,PhoneGaps CordovaWebView 可以使用客户端证书对服务器进行身份验证吗?
我了解本机浏览器可以使用客户端证书,但我试图让 PhoneGap Android 应用程序与需要客户端证书才能工作的服务器通信,但看不到如何操作。我尝试了各种我在 google 上看到的方法,但它们不适用于 Android 4.0 或更高版本。任何建议将不胜感激。
WebView 或更具体地说,PhoneGaps CordovaWebView 可以使用客户端证书对服务器进行身份验证吗?
我了解本机浏览器可以使用客户端证书,但我试图让 PhoneGap Android 应用程序与需要客户端证书才能工作的服务器通信,但看不到如何操作。我尝试了各种我在 google 上看到的方法,但它们不适用于 Android 4.0 或更高版本。任何建议将不胜感激。
这不可能。sdk 中没有回复客户端证书质询所需的代码。如果您在 android sdk 中查看 WebViewClient 的源代码,您将看到此方法
/**
* Notify the host application to handle a SSL client certificate
* request (display the request to the user and ask whether to
* proceed with a client certificate or not). The host application
* has to call either handler.cancel() or handler.proceed() as the
* connection is suspended and waiting for the response. The
* default behavior is to cancel, returning no client certificate.
*
* @param view The WebView that is initiating the callback.
* @param handler An ClientCertRequestHandler object that will
* handle the user's response.
* @param host_and_port The host and port of the requesting server.
*
* @hide
*/
public void onReceivedClientCertRequest(WebView view,
ClientCertRequestHandler handler, String host_and_port) {
handler.cancel();
}
你在文档部分看到@hide 了吗?这意味着“不要将其提供给公众”。我们需要能够覆盖此方法并利用 ClientCertRequestHandler,但我们不能。不确定谷歌什么时候会打开这个 API,但它在 JellyBean 中不可用。