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 クラスに移動しただけなので、WebViewClient ではなく、そこから CordovaWebViewClient を拡張するだけで済み、4.2 でも機能します。

于 2012-11-13T14:30:57.330 に答える