我尝试使用客户端证书通过webview访问网站的最后几天。我使用了来自https://github.com/yonekawa/webview-with-client-certificate的开源项目。 Evertything在android 2.3.3平台上运行正常,我可以安装证书并在ssl错误后调用
onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error){
handler.proceed();}
然后
onReceivedHttpAuthRequest(final WebView view,
final HttpAuthHandler handler, final String host, final String realm)
调用了,我可以传递凭据以进行安全访问。 问题是4.x webview没有相同的行为。我必须创建一个包含所有内部类的自定义jar,请参阅:https://github.com/yonekawa/webview-with-client-certificate/issues/1所以我可以使用hiden方法
onReceivedClientCertRequest(WebView view,
ClientCertRequestHandler handler, String host_and_port)
问题是该方法过度使用并且项目被编译,但该方法永远不会被调用,而是像往常一样调用 onReceivedSslError 然后页面完成加载白页而不用像2.3中一样调用 onReceivedHttpAuthRequest 。 有没有人真正设法使上述示例适用于需要客户端证书和授权的网站?
答案 0 :(得分:-1)
我确实在Android 4.1.2上看到了该事件。
我用ClientCertificateWebView替换了WebView并加载了一个请求客户端证书的URL。
https://github.com/yonekawa/webview-with-client-certificate/blob/master/res/layout/main.xml
正如所料" onReceivedClientCertRequest"被调用。
确保您的服务器实际上是在请求客户端证书。