8

Android のネイティブ WebView に問題があります。SSL クライアント証明書を使用してサイトで認証する必要があります。Android WebView はこれをサポートしていないようです。回避策として、WebView の修正版を使用しました。

https://github.com/yonekawa/webview-with-client-certificate

変更された WebView は、適切に構成された SslSocketFactory を標準の Android WebView に挿入することによって機能します。これは、Android 2.x デバイスで正常に動作します。ただし、Android 4 ICS では機能しなくなりました。SslSocketFactory はまだ ICS にありますが、もう使用されていないようです。

私の質問は次のとおりです。クライアント証明書で動作するように、ICS で Android WebView を構成することに成功した人はいますか? または、代替手段はありますか?

私がすでに試したこと:

  • SSL クライアント証明書を Android キーストアにインポートし、変更せずに WebView を使用するだけです。これは機能しません。クライアント証明書はリクエストとともに送信されません。ただし、ネイティブ ブラウザでは動作します。

  • HttpClient を使用して自分で SSL 接続を作成し、サイトの HTML を取得して WebView に渡します。これは基本的に機能しますが、WebView によって行われたすべてのリクエストをインターセプトして自分で処理する必要があります。ただし、WebView は POST 要求のデータを提供しないため、このアプローチは使用できません。

4

1 に答える 1

4

あなたが望むのは、次の隠しメソッドをオーバーライドすることだと思います:

public void onReceivedClientCertRequest(WebView view,
ClientCertRequestHandler handler, String host_and_port) {

デフォルトでは、これによりリクエストがキャンセルされます。

非表示の API を使用するために、この例に従ってこのメソッドを使用しました: http://devmaze.wordpress.com/2011/01/19/using-com-android-internal-part-5-summary-and-example/

返事遅れてすみません。あなたの質問に出くわしました...それでも役立つことを願っています。

于 2012-09-11T08:16:55.077 に答える